0

私のサイトはほぼ完成しましたが、問題があります。私のサイトは 10 秒から 15 秒ごとにデータベースを検索して、更新があるかどうかを確認します。更新がある場合は、オンラインのユーザーに通知を送信します。Google で検索したところ、Comet と AJAX という 2 つの解決策が見つかりました。私の場合はどちらが良いですか。またはより良い解決策はありますか?

4

1 に答える 1

0

私の意見では、共有ホスティングで Apache と PHP を使用する Web サイトの最善の解決策は、リアルタイムのホストされたサービスを使用して、接続されたクライアントに更新をプッシュすることです。

理由は次のとおりです。

Apache は長時間持続する接続を処理するように構築されていないため、Comet や WebSocket ソリューションには適していません。PHP の Comet および WebSocket ソリューションは、Apache ではなく、デーモン プロセスとしてスタンドアロンで実行される可能性があります。共有ホスティングでは、デーモン プロセスを実行できる可能性はほとんどありません。ホスティング プロバイダーも、多くの永続的な接続を開いたままにし、共有マシンでリソースを占有することに満足する可能性は低いです。

AJAX ポーリング ソリューションを使用して 10 ~ 15 秒ごとにサイトをポーリングし、そのポーリングにデータベース クエリを含めると、サイトに適切な数のクライアントがある場合、リソースの使用量が急速に急増する可能性があります。

クライアント 100 台、ポーリング 10 秒、周期 60 秒 = 100 * 10 * 6 = 1 分あたり 6000 件のリクエストとデータベース クエリ。更新が行われていない場合、多くの場合、これらの要求も無駄になる可能性があります。ここでより大きな例を見つけることができます。

Web サイト クライアントに更新を即座にプッシュする機能をオフロードすることで、これらの 6000 のリクエストとデータベース クエリを削除し、リアルタイム ホスト サービスへの 1 つの呼び出しに置き換えます。サービスはクライアントへの永続的な接続を維持するため、アプリケーションが更新をプッシュすると、接続されたクライアントに配信できます。

最後に、リアルタイム通信の優先ソリューションとして WebSocket が Comet に取って代わることに注意してください。このプロトコルは、Comet ソリューションがさまざまなハッキングで解決しようとした問題を解決するために作成されました。これらのテクノロジーと WebSocket の歴史について詳しくは、こちらを参照してください。

于 2012-06-17T19:28:18.843 に答える