我有这样的循环中长轮询:PHP长轮询失败
$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);
}
的问题是:“如果”条件是从来没有在while循环的中间进入,即使logs.txt被修改。我必须等15秒,直到下一次调用此文件才能获取更新的内容(因此它变成了常规的“setTimeout风格”AJAX轮询,而不是长时间轮询)。任何想法为什么?
我们看不到$ _SESSION ['lasttime']和$ last_modif在哪里变化,您在没有if的情况下尝试它并检查它是否可用 – ZiTAL 2012-02-21 14:22:29
对不起,我没有添加它们,因为我知道它们不相关:/ my问题是回答,但再次感谢 – Cystack 2012-02-21 14:39:30