【问题标题】:Idea how to implement server-push content without php looping想法如何在没有 php 循环的情况下实现服务器推送内容
【发布时间】:2012-09-04 14:06:09
【问题描述】:

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

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

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

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

【问题讨论】:

    标签: php mysql comet


    【解决方案1】:

    我认为您的问题是您对usleep 有一个小错误。参数应该是:

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

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


    使用:

    usleep(10 * 1000000);
    

    或:

    sleep(10);
    

    【讨论】:

    • 谢谢 Yoshi,那我试试这个。
    【解决方案2】:

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

    【讨论】:

      【解决方案3】:

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

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

      【讨论】:

      • 谢谢马特 S 我会试试这个。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-05-26
      • 1970-01-01
      • 1970-01-01
      • 2010-11-08
      • 1970-01-01
      • 2018-07-29
      • 1970-01-01
      相关资源
      最近更新 更多