2011-04-27 2 views
3

Cometd 또는 간단한 혜성 같은 응용 프로그램의 목적을 PHP로 된 간단한 longpolling 요청과 무한 루프와 같은 코드를 통해 알 수는 없습니다표준 롱 폴링을 통한 혜성 소프트웨어의 장점

$time = time(); 
while(time() - $time < 30) { 
    if ($query) { 
     $shapes = ...; 
     echo json_encode($shapes); 
     break; 
    } 
    usleep(25000); 
} 

lighttpd 또는 NGIX와 같이 여러 요청을 위해 설계된 웹 서버에서 실행됩니다.

어쩌면 나는 혜성 서비스의 문서를 이해하지 못할 수도 있습니다. 위의 내용은 "혜성"요청이지만, 혜성 같은 것이 왜 더 좋은지는 알고 있습니다.

+0

예를 들어, 응답 시간 간격은 250ms입니다. 또한 모든 활성 연결에 대해 별도의 PHP 프로세스를 사용할 필요가 없습니다. 그 일은 꽤 무거워. 동등한 PHP long polling 솔루션을 사용할 때보 다 서버 당 혜성 연결을 더 많이 열 수 있어야합니다. –

+0

@frank apache는 각 연결마다 스레드를 남기고있는 유일한 웹 서버입니다. lighttpd는 실제로 다중 스레드 연결을 위해 설계되었습니다. – austinbv

+0

PHP 자체는 스레드로부터 안전하지 않습니다. 물론 많은 PECL 모듈은 그렇지 않습니다. lighttpd/nginx를 사용하면 모든 활성 연결에 대해 PHP CGI proc을 실행하지 마십시오. –

답변

1

oretd와 같은 Cometd 및 유사한 소프트웨어는 영역을 분열시키는 데 유용합니다. lighttpd가 지원하는 파이썬 서비스는 혜성 서비스가 메시지 대기열에 묶여있어 라이트 메시지 알림 (예 : 일괄 요청 완료, 새 메시지 수신)을 처리하는 동안보다 복잡한 작업을 수행하는 데 중점을 둘 수 있습니다. lighttpd 서버 DB 요청을 처리하거나 POST/PUT/DELETE 요청을 처리합니다.

마지막으로 Apache는 여전히 인기가 높은 웹 서버이지만 천 개 이상의 연결을 열려고 시도하면 영광의 불꽃으로 죽을 것입니다. 혜성 지원을 추가하고자하는 아파치 서버 배열을 가진 플랫폼의 경우, lighttpd 또는 nginx를 사용하는 것과 비교하여 out of the box 솔루션을 사용하는 것이 합리적 일 것입니다.