1

私はcometを使用してサーバープッシュコンテンツをクライアントブラウザに実装していました。mysqlが挿入されたときに更新があるはずです。そうするとクライアントに何かが起こるので、私は現在次のようにPHPで実行しています。

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

実際には機能していますが、5つの同時クライアントでテストしただけでも、ホスティング(共有)のリソースが不足しています。この時点でCPUは​​40%負荷がかかっており、アカウントが無効になっています。

したがって、誰かがphpをトリガーして、チェックをループせずにのみ新しい更新を送信する方法についてアドバイスしてください。

4

3 に答える 3

2

あなたの問題は、に関するわずかなエラーがあることだと思いますusleep。パラメータは次のようになります。

マイクロ秒
停止時間(マイクロ秒)。マイクロ秒は100万分の1秒です。

現在、スクリプトは10秒ではなく0.01秒停止しますが、これはあなたが望んでいたことではないと思います。


使用する:

usleep(10 * 1000000);

また:

sleep(10);
于 2012-09-04T14:38:03.993 に答える
2

あなたの Javascript がどのように見えるかはわかりませんが、アプローチが間違っていると思います。あなたが本当にやりたいことは、おそらく 10 秒間隔でブラウザからリクエストを送信することです。この例を参照してください。

于 2012-09-04T14:13:01.677 に答える
1

このメソッドは、スリープ時間中に CPU を使用しません。

set_time_limit(0);
while (check database if update is there) {
   sleep(10); 
   // do write json
}
于 2012-09-04T14:14:26.950 に答える