ホームページ > バックエンド開発 > PHPチュートリアル > PHP は Comet ベースのリアルタイム メッセージングを効果的に処理できますか?

PHP は Comet ベースのリアルタイム メッセージングを効果的に処理できますか?

DDD
リリース: 2024-12-31 00:26:16
オリジナル
532 人が閲覧しました

Can PHP Effectively Handle Comet-Based Real-Time Messaging?

Can PHP Power Comet Real-Time Messaging?

バックエンドとして PHP を使用してリアルタイム チャットを実装することを検討することもできます。しかし、この考えには一般的な批判が影を落としています。

「PHP は、各ブラウザ クライアントとの永続的な接続を維持する必要があるため、Comet にとって不適切な選択であると伝えられています。mod_php を利用すると、それぞれのブラウザ クライアントに対して排他的に Apache の子を結び付ける必要があります。クライアントにとって、ソリューションはスケーラブルではありません。」

をさらに深く掘り下げる問題

この懸念に対処するために、根本的な課題を調べてみましょう:

Apache のスレッド管理

すべての Apache リクエストは個別のワーカー スレッドに関与します完成するまで。 Comet リクエストは、持続時間が長いことで知られており、これらのスレッドを独占する可能性があります。

PHP の同時実行制限

Apache のスレッド割り当てが解決された場合でも、PHP の性質上、一意のスレッドが必要ですリクエストごとに。その結果、FastCGI は状況を改善できません。

継続: PHP の範囲を超えて

イベント トリガーで Comet リクエストを再開できるようにする継続は、本質的にはありません。 PHP でサポートされています。

可能解決策

これらの障害にもかかわらず、回避策は存在します。

  • Apache のイベント MPM: Apache の「イベント」MPM はキープアライブ状態を別の方法で処理しますが、依然としてリクエストが終わるまでスレッドの「スヌーズ」を延期します
  • ロード バランサー ルーティング: ロード バランサーを利用すると、Apache および Comet 対応サーバー (Jetty、Tomcat など) を委任して単一のサーバーでリクエストを処理することが可能になります。 port.

注意点

これらのソリューションには注意点があります。イベント MPM は大幅な改善を提供しない可能性があり、負荷分散によりアーキテクチャがさらに複雑になります。

以上がPHP は Comet ベースのリアルタイム メッセージングを効果的に処理できますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート