이미 말한 내용에 동의 / 확대하면 FastCGI가 문제를 해결할 수 없다고 생각합니다.
Apache
Apache에 대한 각 요청은 요청이 완료 될 때까지 하나의 작업자 스레드를 사용합니다. COMET 요청에는 시간이 오래 걸릴 수 있습니다.
Ajaxian에 대한 이 기사에서는 Apache에서 COMET을 사용하는 것에 대해 언급하고 있으며 이는 어렵습니다. 이 문제는 PHP에만 국한된 것이 아니며 Apache에서 사용하려는 모든 백엔드 CGI 모듈에 적용됩니다.
제안 된 해결책은 요청이 작업자 스레드로 전달되는 방식을 변경하는 '이벤트'MPM 모듈 을 사용하는 것 입니다.
이 MPM은 HTTP의 'keep alive 문제'를 수정하려고합니다. 클라이언트가 첫 번째 요청을 완료 한 후 클라이언트는 연결을 열린 상태로 유지하고 동일한 소켓을 사용하여 추가 요청을 보낼 수 있습니다. 이것은 TCP 연결을 생성 할 때 상당한 오버 헤드를 줄일 수 있습니다. 그러나 Apache는 전통적으로 전체 자식 프로세스 / 스레드가 클라이언트의 데이터를 기다리도록 유지하므로 자체 단점이 있습니다. 이 문제를 해결하기 위해이 MPM은 전용 스레드를 사용하여 Listening 소켓과 Keep Alive 상태에있는 모든 소켓을 모두 처리합니다.
안타깝게도이 방법도 작동하지 않습니다 . 요청이 완료된 후에 만 '스누즈' 하여 클라이언트의 새 요청을 기다리기 때문입니다.
PHP
이제 문제의 다른 측면을 고려하면 comet 요청 당 하나의 스레드를 유지하는 문제를 해결하더라도 요청 당 하나의 PHP 스레드가 필요합니다. 이것이 FastCGI가 도움이되지 않는 이유입니다.
혜성 요청이 트리거 된 이벤트가 관찰 될 때 재개되도록 허용하는 Continuations 와 같은 것이 필요합니다 . AFAIK, 이것은 PHP에서 가능한 것이 아닙니다. Java에서만 본 적이 있습니다 . Apache Tomcat 서버를 참조하십시오 .
편집하다:
있다 기사는 여기 부하 분산 (사용에 대한 HAProxy를 당신이 아파치 서버와 같은 서버의 포트 80에서 혜성을 사용하는 서버 (예를 들어, 부두, 자바에 대한 바람둥이) 모두를 실행할 수 있도록).