我正在使用comet到客户端浏览器实现服务器推送内容。 当mysql插入时应该有更新,然后客户端会发生一些事情,所以我目前正在通过PHP这样做:
PHP
while (check database if update is there)
{
usleep(10000);
// do write json
}
它实际上工作,但发生在我身上的是我的托管(共享)资源耗尽,即使我只是测试5个同时客户端。 此时CPU的负载为40%并导致帐户禁用。
所以请有人建议如何触发php只发送新更新而不进行循环检查。
答案 0 :(得分:2)
我不知道你的Javascript是怎样的,但我认为你接近它是不正确的。你真正想做的可能是以10秒的间隔从浏览器发送请求。请参阅this example。
答案 1 :(得分:2)
我认为您的问题是您在usleep
方面有轻微错误。参数应为:
微秒
微秒停止时间。微秒是百万分之一 第二
您的脚本目前暂停0.01秒而不是10秒,我认为这不是您想要的。
使用:
usleep(10 * 1000000);
或:
sleep(10);
答案 2 :(得分:1)
此方法在睡眠时间内不会使用任何CPU:
set_time_limit(0);
while (check database if update is there) {
sleep(10);
// do write json
}