Соглашаясь / расширяя сказанное, я не думаю, что FastCGI решит проблему.
Apache
Каждый запрос в Apache будет использовать один рабочий поток до его завершения, что может занять длительное время для запросов COMET.
В этой статье на Ajaxian упоминается использование COMET на Apache, и это сложно. Эта проблема не является специфичной для PHP и относится к любому внутреннему CGI-модулю, который вы можете использовать в Apache.
Предлагаемое решение заключалось в использовании модуля MPM 'event' , который изменяет способ отправки запросов в рабочие потоки.
Этот MPM пытается исправить
«проблема поддержания жизни» в HTTP.
После того, как клиент завершает первый
запрос, клиент может сохранить
Соединение открой и отправь дальше
запросы с использованием одного и того же сокета. это
может сохранить значительные накладные расходы в
создание TCP-соединений. Тем не мение,
Апач традиционно держит целый
дочерний процесс / поток, ожидающий данных
от клиента, который приносит свой
недостатки. Для решения этой проблемы,
этот MPM использует выделенный поток для
обрабатывать как сокеты прослушивания, и
все розетки, которые находятся в Keep Alive
состояние.
К сожалению, это тоже не сработает, потому что он будет только 'snooze' после того, как запрос завершен, ожидая новый запрос от клиента.
PHP
Теперь, учитывая другую сторону проблемы, даже если вы решите проблему с удержанием одного потока на запрос кометы, вам все равно потребуется один поток PHP на запрос - вот почему FastCGI не поможет.
Вам нужно что-то вроде Continuations , которое позволяет возобновлять запросы кометы, когда наблюдается событие, вызванное ими. AFAIK, это не то, что возможно в PHP. Я видел это только на Java - см. Сервер Apache Tomcat .
Edit:
Здесь есть статья об использовании балансировщика нагрузки ( HAProxy ), чтобы позволить вам запускать как сервер apache, так и сервер с поддержкой комет (например, jetty, tomcat для Java) на порт 80 того же сервера.