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