将无限的PHP循环崩溃MySQL服务器?

时间:2012-06-07 13:41:03

标签: php mysql infinite-loop

如果我有PHP代码:

<?php
  set_time_limit(0); 
  //mysql connection

  while(true)
  {
    //check for updates in mysql (mysql_query...mysql_num_rows...)
    flush(); 
    ob_flush(); 
    sleep(3);
  }

?>

我的问题:

这段代码不会超载我的MySQL服务器吗?

如果我有1000名在线用户,此代码不会导致问题吗?

1 个答案:

答案 0 :(得分:1)

是的,它会的。它严重缩放。

最好在之间放置一个快速图层,就像memcached或redis一样。在RAM中运行的东西。

没有必要让每个用户检查数据库是否进行了更新。让我们检查一下,然后使用fastlayer与其他人分享结果。

完成上次数据库查询时检查快速层。如果超过3秒前,请执行新的db-query并更新快速层。否则,只需从快速图层中获取值。