すでに言われていることに同意/拡大すると、FastCGIが問題を解決するとは思わない。
Apache
Apacheへの各リクエストは、リクエストが完了するまで1つのワーカースレッドを使用します。これは、COMETリクエストの場合は時間がかかる場合があります。
Ajaxianに関するこの記事では、ApacheでCOMETを使用すること、およびそれが難しいことに言及しています。この問題はPHPに固有のものではなく、Apacheで使用する可能性のあるすべてのバックエンドCGIモジュールに当てはまります。
提案された解決策は、リクエストがワーカースレッドにディスパッチされる方法を変更する「イベント」MPMモジュールを使用することでした。
このMPMは、HTTPの「キープアライブの問題」を修正しようとします。クライアントが最初の要求を完了した後、クライアントは接続を開いたままにして、同じソケットを使用してさらに要求を送信できます。これにより、TCP接続を作成する際のオーバーヘッドを大幅に節約できます。ただし、Apacheは従来、子プロセス/スレッド全体をクライアントからのデータを待機させ続けるため、独自の欠点があります。この問題を解決するために、このMPMは専用スレッドを使用して、リスニングソケットと、キープアライブ状態にあるすべてのソケットの両方を処理します。
残念ながら、それも機能しません。これは、リクエストが完了した後にのみ「スヌーズ」し、クライアントからの新しいリクエストを待機するためです。
PHP
ここで、問題の反対側を考慮すると、cometリクエストごとに1つのスレッドを保持するという問題を解決したとしても、リクエストごとに1つのPHPスレッドが必要になります。これがFastCGIが役に立たない理由です。
トリガーされたイベントが観測されたときにコメットリクエストを再開できるようにする継続のようなものが必要です。AFAIK、これはPHPで可能なことではありません。私はそれをJavaでしか見たことがありません-ApacheTomcatサーバーを参照してください。
編集:
ロードバランサー(HAProxy)を使用して、同じサーバーのポート80でApacheサーバーとComet対応サーバー(Jetty、JavaのTomcatなど)の両方を実行できるようにする方法についての記事があります。