私はチャットのような Web アプリケーションを計画しています。あるユーザーが何かを投稿すると、他のすべてのユーザー (つまり、ブラウザーでそのサイトを指しているユーザー) が即座に更新されます。これに対する一般的な選択は、ロングポーリング AJAX リクエストを使用したコメット スタイルのメッセージングです。jQuery を使用してクライアント側の部分を作成することは、それほど問題ではありません。
しかし、PHP でサーバー側の部分を実装するにはどうすればよいのでしょうか。投稿/メッセージは MySQL に保存されます。質問は、データベースに新しい投稿を書き込んだ後、待機中のすべてのリクエストに、ポーリングを使用せずにデータが利用可能であることを通知するにはどうすればよいですか? ポーリングは機能しますが、見苦しく、リソースを浪費するため、これは私が望んでいないことです:
while (timeout not reached) {
if ($database->has_changes())
break;
sleep(1);
}
handle_changes_if_any();
ここで役立つ MySQL の機能はありますか? ある種の IPC は役に立ちますか? サーバーは Apache を実行します。