0

この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 人のユーザーがオンラインになった場合、このコードは問題を引き起こしませんか?

4

1 に答える 1

1

ええ、そうなります。スケーリングが悪い。

memcachedやredisのように、間に高速レイヤーを配置することをお勧めします。RAMで実行されるもの。

データベースが更新されたかどうかをすべてのユーザーに確認させる必要はありません。それをチェックして、fastlayerを使用して他の人と結果を共有しましょう。

最後のデータベースクエリが実行されたときにファストレイヤーを確認します。3秒以上前の場合は、新しいdb-queryを実行して、高速レイヤーを更新します。それ以外の場合は、高速レイヤーから値を取得します。

于 2012-06-07T13:44:09.623 に答える