したがって、1 秒あたり少なくとも 1,000 リクエストについて話していることになります。これは、強力なマシンであってもかなり高い負荷であると考えられています。では、リクエストごとに何をしなければならないのでしょうか?
- 接続の初期化
- リクエストの処理
- サーバー側ロジックの実行
このシナリオでは、利用可能なすべてのリソース (ファイル I/O を含む) をほとんど消費しています。また、おそらく最も重要な機能ではない付加価値のために、ほとんどの Web サーバー リソースを消費しています。
より良いアプローチは何でしょうか?
変更をポーリングするのではなく、変更に反応したい。したがって、ユーザーごとに、そのイベントを含むチャネルがあり、イベントが発生したときにサーバーから通知を受ける必要があります。残念ながら、別の回答で述べたように、これは PHP の最強のスーツではありません。
クライアント側では、SockJS を見て、それをNode.jsまたはVert.xとペアにすることができます。必要なアーキテクチャはすべて無料で入手でき、セットアップもそれほど難しくありません。SockJS には優れた一連のプロトコル テストも付属しているため、独自のサーバー側実装を非常に簡単に作成できます。
これらの変更により、SockJS プロバイダーへの要求はユーザーごとに 1 つだけになり、必要に応じて個別にスケーリングできます。また、JSON 呼び出しによってプライマリ サービスが中断されることもありません。だから私たちはで終わる
- SockJS プロバイダーへのページ読み込みごとに 1 つのリクエスト
- 変更ごとに PHP から SockJS プロバイダーへの 1 つの要求
認証は少し複雑になりますが、PHP アプリケーションと SockJS プロバイダーの両方が知っている秘密鍵を取得し、それを使用して Cookie に署名することができます。次に、JSON リクエストでその Cookie を渡すことができます。