服务器端PHP长轮询

我已经提出了许多问题并尝试了许多不同的事情(编写和阅读教程)关于网络上的长轮询,在尝试长时间轮询时没有关于编写服务器端php的可靠结果。 我设置了客户端和服务器端代码。但是我有一些问题。

  1. 该呼叫不会从2周前调用的最后一个插入ID调用新记录

我尝试了很多不同的东西,这些结果并不是我想要的。

我需要的只是登录的用户查看自从Feed中的上一篇文章以来朋友发布的任何新post。 ajax选择Feed中最后一个工作正常的ID。将此发送到我的PHP。 我希望我的php然后决定数据库中是否有一个新post的id高于它发送的当前ID。 使用JSON将其发回并将其插入到Feed中。 如果它根本没有任何东西,那么就不发布任何内容。但是它的发布内容并没有发布新的结果。所以它错了。 我正在考虑让呼叫持续大约一分钟也停止对我的服务器的大量呼叫。

我怀疑这里有很多人都有打电话给服务器的经验,所以真的可以找到我搞砸了的地方。 我认为它本身就是PHP代码,因为我不习惯使用JSON和WHILE循环。

这就是我所拥有的

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); ?>  function wait() { var 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("
X
"+response['first']+" "+ response['middle']+" "+response['last']+" said
"+response['streamitem_timestamp']+"
"+response['streamitem_content']+"
\ \ \
"); { return false; setTimeout('wait()',1000); } error: function wait(XMLHttpRequest, textStatus, errorThrown) { alert("error: " + textStatus + "(" + errorThrown + ")"); setTimeout('wait()',1000); } } }); } $(document).ready(function(){ wait(); });

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