如何在没有php循环的情况下实现服务器推送内容

如何在没有php循环的情况下实现服务器推送内容,php,mysql,comet,Php,Mysql,Comet,我正在使用comet实现服务器推送内容到客户端浏览器。 当mysql获得insert时,应该会有更新,然后客户端会发生一些事情,所以我目前正在通过PHP执行以下操作: PHP while (check database if update is there) { usleep(10000); // do write json } 它实际上在工作,但发生在我身上的是我的托管(共享)资源耗尽,即使我只是同时测试5个客户端。 此时CPU负载为40%,导致帐户禁用 因此,请

我正在使用comet实现服务器推送内容到客户端浏览器。 当mysql获得insert时,应该会有更新,然后客户端会发生一些事情,所以我目前正在通过PHP执行以下操作:

PHP
  while (check database if update is there)
  {
    usleep(10000); 
   // do write json
  }
它实际上在工作,但发生在我身上的是我的托管(共享)资源耗尽,即使我只是同时测试5个客户端。 此时CPU负载为40%,导致帐户禁用


因此,请有人告诉我如何触发php只发送新的更新而不进行循环检查。

我不知道您的Javascript看起来如何,但我认为您的做法是错误的。您真正想做的可能是每隔10秒从浏览器发送请求。请参阅。

我不知道您的Javascript看起来如何,但我认为您的做法是错误的。您真正想做的可能是每隔10秒从浏览器发送请求。请参阅。

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

set_time_limit(0);
while (check database if update is there) {
   sleep(10); 
   // do write json
}

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

set_time_limit(0);
while (check database if update is there) {
   sleep(10); 
   // do write json
}

我认为你的问题在于你在这方面有一个小小的错误。参数应为:

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

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


使用:

或:


我认为你的问题在于你在这方面有一个小小的错误。参数应为:

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

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


使用:

或:


谢谢Matt S我会试试这个。谢谢Matt S我会试试这个。谢谢Yoshi,然后我会试试这个。谢谢Yoshi,然后我会试试这个。
sleep(10);