Server Side PHP Long polling

Hice muchas preguntas y probé muchas cosas diferentes (redactando y leyendo tutoriales) con respecto a las encuestas largas en la red sin resultados sólidos con respecto a la redacción del php del lado del servidor cuando se trataba de encuestas largas. He configurado el código del lado del servidor y del lado del servidor. Solo tengo algunos problemas.

La llamada no llama a los nuevos registros de la última identificación insertada que llama desde hace 2 semanas

He intentado muchas cosas diferentes y estos resultados no son lo que estoy buscando.

Todo lo que necesito es que el usuario que ha iniciado sesión para ver las nuevas publicaciones realizadas por amigos desde la última publicación en ese feed. El ajax selecciona la última ID en la fuente que está funcionando muy bien ... Envía esto a mi PHP. Me gustaría que mi php luego decidiera si hay o no una nueva publicación en la base de datos que sea una ID más alta que la actual a través de la cual se envió. Envíalo de vuelta con JSON e insértalo en el feed. Si no tiene nada en absoluto, entonces no publique nada ... Pida su contenido de publicación y no hay ningún nuevo resultado publicado ... Así que está mal. Estoy pensando en hacer que la llamada dure aproximadamente un minuto también para detener llamadas extensas a mi servidor.

Sospecho que hay algunas personas justas aquí que tienen experiencia en hacer llamadas al servidor, por lo que realmente pueden encontrar el lugar en el que he cometido un error. Creo que es el código PHP, ya que no estoy acostumbrado a usar los bucles JSON y WHILE.

Esto es lo que tengo

AJAX

  $calls = "SELECT  FROM streamdata ORDER BY streamitem_id DESC LIMIT 1";
    $chants = mysqli_query($mysqli, $calls) or die(mysqli_error($mysqli));

    $streamitem_catch = mysqli_fetch_array($chants);
    ?>
    <script type="text/javascript" charset="utf-8">

    function wait() {
        var streamitem_id =<? echo $streamitem_catch['streamitem_id']; ?>;
    $.ajax({
        type: "POST",
        url: "testingajaxfeed.php?streamitem_id=" + streamitem_id,
        async: true,
        cache: false,
    dataType: "json",
    data: { streamitem_id: streamitem_id }, 
        success: function (response){
               $("#homestatusid").prepend("<div id='divider-"+response['streamitem_id']+"'><div class='userinfo'><a href='/profile.php?username="+response['username']+"'><img class='stream_profileimage' style='border:none;padding:0px;display:inline;' border=\"0\" src=\"imgs/cropped"+response['id']+".jpg\" onerror='this.src=\"img/no_profile_img.jpeg\"' width=\"40\" height=\"40\" ></a><div class'delete' style='cursor:pointer;position:relative;top:0px;float:right;padding-right:5px;' onclick=\"delete_('"+response['streamitem_id']+"');\">X</div><a href='/profile.php?username="+response['username']+"'>"+response['first']+" "+ response['middle']+" "+response['last']+"</a><span class='subtleLink'> said</span><br/><a class='subtleLink' style='font-weight:normal;'>"+response['streamitem_timestamp']+"</a><hr>"+response['streamitem_content']+"<div style='height:20px;' class='post_contextoptions'><div id='streamcomment'><a style='cursor:pointer;' id='commenttoggle_"+response['streamitem_id']+"' onclick=\"toggle_comments('comment_holder_"+response['streamitem_id']+"');clearTimeout(streamloop);swapcommentlabel(this.id);\">Write a comment...</a></div><div id='streamlike'><a title='Like "+response['first']+" "+ response['middle']+" "+response['last']+"s status' id='likecontext_"+response['streamitem_id']+"' style='cursor:pointer;' onClick=\"likestatus("+response['streamitem_id']+",this.id);\"><div style='width:50px;' id='likesprint"+response['streamitem_id']+"'>Like</a></div><div style='width:50px;' id='likesprint"+response['streamitem_id']+"'><a title='See who likes "+response['first']+" "+ response['middle']+" "+response['last']+"s status' href='include/likes.php?streamitem_id="+response['streamitem_id']+"' /></a></div></div></form></div><div id='streamdislike'><a id='dislikecontext_"+response['streamitem_id']+"' style='cursor:pointer;' onClick=\"dislikestatus("+response['streamitem_id']+",this.id);\"><div style='width:70px;' id='dislikesprint"+response['streamitem_id']+"'>Dislike</a></div><div style='width:70px;' id='dislikesprint"+response['streamitem_id']+"'></div></div></form><div class='stream_comment_holder' style='display:none;' id='comment_holder_"+response['streamitem_id']+"'><div id='comment_list_"+response['streamitem_id']+"'></div><div class='stream_comment_inputarea'><form id='mycommentform' method='POST'  class='form_statusinput'>\
    <input type='hidden'  name='streamidcontent' id='streamidcontent' value='"+response['streamitem_id']+"'>\
    <input type='input' name='commentingcontents' id='commentingcontents' placeholder='Say something' autocomplete='off'>\
    <input type='submit' id='button' value='Feed'><br/></div></div>");
    {
    return false;
    setTimeout('wait()',1000);
     }
    error: function wait(XMLHttpRequest, textStatus, errorThrown)
    { 
    alert("error: " + textStatus + "(" + errorThrown + ")");   
    setTimeout('wait()',1000);
    }
    }
    });
    }

$(document).ready(function(){

    wait();
});


    </script>

PHP

if (isset($_POST['streamitem_id'])) {
$lastID = $_POST['streamitem_id'];

if(empty($lastID)) {
 die('timeout');
}
else {
$following_string = $_SESSION['id'];
$result="SELECT d.*, c.*, u.*
  FROM streamdata          AS d
  JOIN streamdata_comments AS c ON d.streamitem_id = c.comment_streamitem
  JOIN users               AS u ON u.id = c.comment_poster
 WHERE c.comment_poster = '$following_string'
   AND d.streamitem_id < '$lastID'
   AND (d.streamitem_target  = '$following_string' OR
       d.streamitem_creator = '$following_string')
   OR  d.streamitem_creator IN $friendlist 
   AND d.streamitem_target IN $friendlist
   ORDER BY d.streamitem_id DESC LIMIT 1";
$result = mysqli_query($mysqli, $result) or die(mysqli_error($mysqli));
 while($row = mysqli_fetch_array($result))
    {
        $last_msg_content = $row['streamitem_content']; 
        $last_msg_id = $row['streamitem_id'];
        $last_msg_timestamp = $row['streamitem_timestamp'];
        $last_msg_comment_id = $row['comment_id'];
        $last_msg_comment_content = $row['comment_content'];
        $last_msg_comment_poster = $row['comment_poster'];
        $last_msg_comment_datetime = $row['comment_datetime'];
        $last_msg_comment_streamitem = $row['comment_streamitem'];
        $last_msg_username = $row['username'];
        $last_msg_user_id = $row['id'];
        $last_msg_first = $row['first'];
        $last_msg_middle = $row['middle'];
        $last_msg_last = $row['last'];
    }}}


$response = array();
$response['streamitem_content'] = $last_msg_content;
$response['streamitem_id'] = $last_msg_id;
$response['streamitem_timestamp'] = Agotime($last_msg_timestamp);
$response['comment_id'] = $last_msg_comment_id;
$response['comment_content'] = $last_msg_comment_content;
$response['comment_poster'] = $last_msg_comment_poster;
$response['comment_datetime'] = Agotime($last_msg_comment_datetime);
$response['comment_streamitem'] = $last_msg_comment_streamitem;
$response['username'] = $last_msg_username;
$response['id'] = $last_msg_user_id;
$response['first'] = $last_msg_first;
$response['middle'] = $last_msg_middle;
$response['last'] = $last_msg_last;

echo json_encode($response);

?>

Respuestas a la pregunta(0)

Su respuesta a la pregunta