0

チャット スクリプトを作成しようとしていますが、訪問者のブラウザが 0.5 秒ごとに新しいメッセージを要求するのは望ましくありません。代わりに、サーバーが新しいメッセージをすぐに送信するようにします。

サーバーにリクエストを送信できると思いました。新しいメッセージがない場合、サーバーは新しいメッセージがあるまで待機します。この待機時間は長くする必要はありません。おそらく 2 ~ 3 秒です。

PHPのsleep()機能を試しました:

while(1)
{

   $temp=$db->query("SELECT * FROM chat WHERE (id=36 OR id=12) AND clock>".$last_time);

   if ($temp->rowCount()!=0) break;

   sleep(1);

}

この「割り込みまで待機」プロセスは、他の訪問者がループを中断したときに機能しますが、ループを開始した訪問者がメッセージを送信しようとすると、永遠に待機します。

私はこれについて間違った方法で進んでいますか?

EDIT *システムはIIS 7 - PHPバージョン5.3.6です

4

1 に答える 1

0

なぜここにタグを付けたのかよくわかりませんfacebook-chat

とにかく、その方法は不適切であり、データベース クエリでサーバーに過負荷がかかります。long-pollingまたはwebsocketsを使用する必要があります。ユーザーに更新をポーリングさせるのは大変に思えるかもしれませんが、適切に実行すれば問題ありません。

于 2013-03-07T19:35:07.910 に答える