在 PHP 中使用长轮询时,例如
$start_time = time();
while ((time() - $start_time) < 30) {
if ($db->getNewStuff()->rows > 0) {
$response = "new stuff!";
break;
}
usleep(1000000);
}
echo $response;
你如何评价,你“投票”了多久?在这个例子中,我选择了 30 秒,因为……好吧,我什至不知道为什么。
使用更长的民意调查(几分钟或类似时间)会产生什么影响? Apache 会崩溃吗?我的应用程序会变得迟缓/卡住/降低性能吗?
此外:进程应该使用
多长时间?
最佳答案
您的 PHP 脚本可能不会存在那么久,具体取决于 time limit .所以,一定要(重新)设置时间限制。否则,我认为增加次数没有任何问题。
至于usleep
应该多长,那是你需要自己去benchmark的。较短的微 sleep 会增加服务器负载,但会更快地找到结果。什么是合适的在很大程度上取决于您的应用程序的其余部分和您的资源。您甚至可能希望根据服务器负载改变微休眠时间(即,在服务器负载高时使其休眠时间更长)。
关于PHP 长轮询 - "long"应该有多长?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6608904/