【问题标题】:checking mysql for long polling purposes检查 mysql 的长轮询目的
【发布时间】:2012-01-25 14:20:03
【问题描述】:

我正在尝试在我的网站上进行一些长时间的轮询,以通知用户收到的邮件。我将 mysql 用于数据库目的。如果表有更新,检查 mysql 是否安全?这是否会导致网站速度变慢,因为它会不断寻找更新?你甚至会如何检查 mysql 是否更新?

代码看起来像这样

while($currentTime <= $lastTime){
     usleep(10000)
     clearstatcache();
     $sql = mysql_query("SELECT time FROM timestamp WHERE $currentTime = timestamp");
     $row = mysql_fetch_array($sql);
     $currentTime = $row['time'];
}

所以基本上,它会一直运行,直到数据库中有一个新的时间戳,但是如果它让服务器每 10 秒查看一次我的数据库,这是否有效?

谢谢

【问题讨论】:

  • PHP 执行服务器端。这意味着这个 while 循环将阻止任何内容显示给用户,直到实际发生更新。将网页加载给用户后,您需要经常使用 ajax 轮询数据库。

标签: php jquery ajax performance long-polling


【解决方案1】:

我强烈建议为此目的使用 cron 作业或计划任务。 http://en.wikipedia.org/wiki/Cron

http://www.developertutorials.com/tutorials/php/running-php-cron-jobs-regular-scheduled-tasks-in-php-172/

如果您在 Windows 上,或者计划任务。

如果您不阻止这种情况,您建议的方法将超时,并保持流程忙碌。而 cron 作业是为这种类型的东西设计的。

【讨论】:

    【解决方案2】:

    您可以使用 AJAX 并让客户端每隔 X 秒轮询一次您的服务器。但您可能会更详细地描述您的问题...

    其他可能的事情是 cron,但您必须提供更多信息。

    【讨论】:

      猜你喜欢
      • 2019-07-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-10-26
      • 2013-08-08
      • 2016-02-03
      • 2011-04-20
      • 1970-01-01
      相关资源
      最近更新 更多