我有這樣的循環中長輪詢: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