我正在建立一个彗星longpolling消息系统
使用jQuery和PHP。 jQuery是我用于ajax的。
问题是,在ajaxed的php文件中,在返回之前等待while循环中的数据,导致我的所有其他ajax请求被挂起,直到它返回。在循环中我调用usleep()。
似乎usleep冻结了我所有的其他PHP,即使它们是单独的文件。有点奇怪。我该如何解决这个问题?继承人彗星php longpolling文件:
<?php
session_start();
if (empty($_SESSION['userID'])) {
echo json_encode(array("status" => "not-loggedIn"));
die();
}
if (empty($_GET['friendID'])) {
echo json_encode(array("status" => "friendID-invalid"));
die();
}
include("../../tools.php");
$html = getNewLiveChatMessages($_GET['friendID'], $_GET['messageID']);
if (!$html) {
$timeout = 2;
while ($timeout > 0) {
$html = getNewLiveChatMessages($_GET['friendID'], $_GET['messageID']);
if ($html) {
break;
}
$timeout--;
/* Wait 10 seconds */
usleep(10000000); /* In microseconds */
}
}
echo json_encode(array("status" => "success", "html" => $html));
?>