Server Side PHP Langes Polling

Ich habe viele Fragen gestellt und viele verschiedene Dinge ausprobiert (Schreiben und Lesen von Tutorials), die langes Polling im Internet betreffen, aber keine soliden Ergebnisse in Bezug auf das Schreiben von PHP auf der Serverseite, wenn versucht wurde, langes Polling durchzuführen. Ich habe meinen clientseitigen und serverseitigen Code eingerichtet. Ich habe nur ein paar Probleme.

Der Aufruf ruft keine neuen Datensätze von der zuletzt eingegebenen ID auf, die er vor 2 Wochen aufgerufen hat

Ich habe viele verschiedene Dinge ausprobiert und diese Ergebnisse sind nicht das, wonach ich suche.

Alles was ich brauche ist, dass der Benutzer eingeloggt ist, um neue Beiträge von Freunden seit dem letzten Beitrag im Feed zu sehen. Der Ajax wählt die letzte ID im Feed aus, die einwandfrei funktioniert. Sendet dies an mein PHP. Ich möchte, dass mein PHP dann entscheidet, ob es einen neuen Beitrag in der Datenbank gibt, der eine höhere ID als die aktuelle hat, die er gesendet hat. Senden Sie es mit JSON zurück und fügen Sie es in den Feed ein. Wenn es überhaupt nichts hat, dann nichts posten. Am Posting-Inhalt und es ist kein neues Ergebnis gepostet. Also ist es falsch. Ich denke darüber nach, den Anruf für ungefähr eine Minute zu halten, um auch umfangreiche Anrufe an meinen Server zu stoppen.

Ich vermute, dass es hier ein paar Leute gibt, die Erfahrung mit dem Tätigen von Anrufen auf dem Server haben. Sie können also wirklich feststellen, wo ich es vermasselt habe. Ich denke, es ist der PHP-Code selbst, da ich nicht an die Verwendung von JSON- und WHILE-Schleifen gewöhnt bin.

Hier ist was ich habe

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);

?>

Antworten auf die Frage(0)

Ihre Antwort auf die Frage