【发布时间】:2013-08-08 08:53:52
【问题描述】:
我正在尝试长轮询。我使用 jquery ajax 调用服务器上的 php 脚本。
这是我的代码:
function getlatest($a){
$stmt = $dbconnect->prepare("SELECT `timestamp` FROM `test`");
$stmt->execute();
$stmt->bind_result($r);
$timestamp = array();
while($stmt->fetch())
{
array_push($timestamp,$r);
}
asort($timestamp);
$x = end($timestamp);
if($x > $a){
//do this
} else {
sleep(5);
getlatest($a);
}
}
我正在尝试为我们的办公室制作一个简单的聊天系统。只有大约 100 个连接的用户在同一时间运行此脚本一整天。
上面的示例代码会不会消耗大量的系统资源?
我只是无法将它放到网上并对其进行测试,因为我已经收到了来自托管的最后警告。
【问题讨论】:
-
线程将被停止,所以是的。但是你为什么不使用循环?您的代码将在一段时间后填充方法堆栈,直到您收到 stackoverflow 异常错误。 (最好睡在客户端)
-
嗯,实际上这可以工作,取决于你所说的大量系统资源是什么意思。我不会使用 php 进行无限循环(即使在处理脚本期间使用刷新来更新缓冲区),而是看一些 php 套接字聊天。
-
你从哪里得到
$a? -
@CORRUPT 抱歉忘记了。 .
-
@KarelG 客户端睡眠。我可以使用它。这样会更好吗?
标签: php sleep long-polling usleep