2

私は最近、CodeIgniter フレームワークを使用して PHP アプリケーションを継承しました。このフレームワークは、認証、ユーザー セッション、CRUD 操作、ルーティング、テンプレート作成、およびアプリケーションのほぼすべての側面を美しく処理します。ただし、1 つの機能では、ロング ポーリングを使用する必要があります。特定の管理者は、他のユーザーが行っていることをほぼリアルタイムで更新する必要があります。現在、数百人のユーザーの場合はすべて正常に機能していますが、数千人のユーザーをサポートするようにスケールアップしています。長いポーリングによってパフォーマンスの問題が発生するのではないかと心配しています。

ロング ポール プロセスの基本は次のとおりです。

  1. ブラウザーは、ロング ポーリング プロセスを開始する GET 要求を行います。

  2. ロング ポーリング プロセスは、1/4 秒ごとに txt ファイルのタイムスタンプをチェックします。

  3. a) txt ファイルが更新されると、ロング ポーリング プロセスが変更をブラウザーに返し、ビューが更新されます。

    b) 25 秒以内に変更が見つからない場合、ロング ポールは終了し、null を返します。

  4. 手順 1 を繰り返します。

このプロセスは、codeigniter フレームワークの外で行われます。このプロセスを socket.io の実装に置き換えるのは良い考えだと思います。

socket.io は、ロングポーリングよりも優れたソリューションになりますか? もしそうなら、実際にデモを構築して負荷テストを行わずに、どのような説得力のある証拠がありますか? 頭の中では良いアイデアのように思えますが、切り替えるには時間と労力を正当化する必要があります。

また、これが意味をなさない場合、または SO 基準による「本当の質問ではない」場合は申し訳ありません。私はバックエンドのスケーラビリティにかなり慣れていないため、これらのほとんどはまったく新しいものです。反対票を投じる前に、(必要に応じて)言葉を変えるための役立つガイダンスを提供してください。ありがとう。

編集: ここでの優先事項は、特に新しいものがテストされていない場合に、コードを切り取って新しいものに置き換えるのは費用がかかるため、現状のままにしておくことです。だから私の質問は、ロングポーリングソリューションがレンガの壁にぶつかった場合/場合、socket.ioは実行可能な代替品になるのでしょうか?

4

1 に答える 1

1

WebSocket はロング ポーリングよりも優れていると思います。ポーリングを使用すると、主にアプリケーションの規模が大きくなるため、不要なネットワーク スループット オーバーヘッドが発生します。この 2 つのリンクを確認してください。

于 2013-02-02T20:24:55.007 に答える