データベース テーブルに特定のイベントをキャプチャする PHP ベースの Web アプリケーションがあります。また、これらのキャプチャされたイベントの視覚化も備えています: ajax によって制御されるイベントを一覧表示する html テーブル。
オプションの「ライブ」機能を追加したいと思います。ボタンを押すと (「スイッチオン」)、その瞬間からキャプチャされたすべてのイベントが、既に表示されているテーブルに挿入されます。イベントの通知、イベント データの取得、テーブルへの挿入の 3 つを実行する必要があります。サーバーの負荷を適切な制限内に保つために、ajax リクエストで新しいイベントをポーリングしたくありません。代わりに、長いポーリング戦略を好みます。
これに伴う問題は明らかに、長いポーリング ajax 呼び出しを実行するときに、サーバーのカウンターパートがイベントを監視する必要があることです。イベントは php スクリプトによって登録されるため、データベースを再度ポーリングして変更を確認する以外に、そのイベントに気付く簡単な方法はありません。これは、長いポーリング リクエストの監視とは別のプロセスでキャプチャ アクションが実行されるためです。Linux のリッチ クライアントで知っているようなプロセス間通信に使用できるメカニズムを見つけようと、いろいろ調べました。実際、セマフォ、共有メモリ、さらには posix 用の php 拡張機能があります。ただし、それらはすべて Linux (または UNIX のような) システムにしか存在しません。通常ではありませんが、まれに MS-Windows システムでアプリケーションが使用されることがあります。
だから私の簡単な質問は: 長いポーリング ajax 要求を処理する php スクリプトにそのようなイベントをプッシュできるすべての (ほとんどの) システムで通常利用できる手段はありますか? 私はすでに他の場所でイベントを持っているので、ファイルやデータベースを常にポーリングせずに何か?