1

我正在使用 Comet 将服务器推送内容实现到客户端浏览器。当 mysql 插入时应该有更新,然后客户端会发生一些事情,所以我目前正在通过 PHP 做这样的事情:

PHP
  while (check database if update is there)
  {
    usleep(10000); 
   // do write json
  }

它确实有效,但发生在我身上的是我的托管(共享)资源耗尽,即使我只是用 5 个同时客户端进行测试。此时 CPU 负载为 40%,导致帐户禁用。

所以请有人建议任何想法如何触发 php 仅在不循环检查的情况下发送新更新。

4

3 回答 3

2

我不知道您的 Javascript 是什么样子,但我认为您的处理方式不正确。您真正想做的可能是以 10 秒的间隔从浏览器发送请求。请参阅此示例

于 2012-09-04T14:13:01.677 回答
2

我认为您的问题是您对usleep. 参数应该是:

微秒
暂停时间以微秒为单位。一微秒是百万分之一秒。

您的脚本当前暂停 0.01 秒而不是 10 秒,我认为这不是您想要的。


采用:

usleep(10 * 1000000);

或者:

sleep(10);
于 2012-09-04T14:38:03.993 回答
1

此方法在睡眠期间不会使用任何 CPU:

set_time_limit(0);
while (check database if update is there) {
   sleep(10); 
   // do write json
}
于 2012-09-04T14:14:26.950 回答