【发布时间】:2012-02-21 14:01:47
【问题描述】:
我有这个循环来长轮询:
$time = time(); //send a blank response after 15sec
while((time() - $time) < 15) {
$last_modif = filemtime("./logs.txt");
if($_SESSION['lasttime'] != $last_modif) {
$_SESSION['lasttime'] = $last_modif;
$logs = file_get_contents("./logs.txt");
print nl2br($logs);
ob_flush();
flush();
die();
}
usleep(10000);
}
问题是:“if”条件永远不会在 while 循环的中间输入,即使 logs.txt 被修改。我必须等待 15 秒,直到下一次调用此文件以获取更新的内容(因此它成为常规的“setTimeout 样式”AJAX 轮询,而不是长轮询)。知道为什么吗?
【问题讨论】:
-
我们看不到 $_SESSION['lasttime'] 和 $last_modif 变化的地方,你试试不带 if 并检查它是否有效
-
对不起,我没有添加它们,因为我知道它们不相关:/ 我的问题得到了回答,再次感谢
标签: php long-polling