【发布时间】:2014-03-22 11:29:35
【问题描述】:
我编写了 php 代码,它从 Asks 表中获取未读取的行:
$sqlanum = "SELECT id FROM asks WHERE answer='' AND profile='1' AND askdate>now()";
$queryanum = mysqli_query($db_conx, $sqlanum);
$rowanum = mysqli_num_rows($queryanum);
我不熟悉 Ajax 长轮询,我只是阅读了一些内容,在搜索了简单的 Ajax 长轮询示例后,我做了这样的事情:
$.ajax({
type: "GET",
url: "chkasks.php",
async: true, /* If set to non-async, browser shows page as "Loading.."*/
cache: false,
timeout: 50000, /* Timeout in ms */
success: function(data){ /* called when request completes */
//addmsg("new", data);
setTimeout(chkAsks, 1000);
},
error: function(XMLHttpRequest, textStatus, errorThrown){
setTimeout(chkAsks, 3000);
}
});
};
但我不知道如何使其循环并在有结果时中断并继续循环我没有结果...
【问题讨论】:
-
从我几年前的尝试来看,许多流行的 Web 服务器以及浏览器都存在这个问题,因为它们不会刷新数据直到某个限制。我希望有人能带来更多的见解,因为我也很感兴趣。我也认为你所指的是“彗星”。
-
感谢您的回复....但我认为 Facebook 正在使用长轮询
-
如果我理解得很好,您想每隔 X 秒检查一次
$rowanum的值,并根据其值更改客户端的行为? -
不,我想每 1 秒检查一次 $rowanum 的值,但除非有 $rowanum 的值,否则不返回任何内容
标签: php mysql ajax json long-polling