잘 설명 할 수 있기를 바랍니다. 나는 객체 지향 방식으로 PHP library to handle ajax requests through PHP을 만들고 있습니다. 나는 현재 긴 폴링 솔루션을 구현하는 좋은 방법을 숙고하고 있지만 무엇인가 궁금하다.아파치에서 PHP로 긴 폴링
아파치는 다중 연결을 잘 유지하지 못합니다. 요청 당 스레드 모델은 Apache를 긴 폴링에 대해 비효율적으로 만듭니다. nginx와 lighttpd 같은 서버를 사용하면 라이브러리에서이 스레드를 훨씬 잘 처리 할 수 있으므로 단일 함수 호출에서 사용 가능한 특정 서버에 최적화 된 다른 기능을 구현할 계획입니다. 아파치의 경우, PHP 애플리케이션의 엄청난 시장 점유율을 차지하기 때문에 더 나은 솔루션이 필요합니다.
들어오는 요청을 보류/일시 중지 상태로두고 다시 활성화 할 준비가 될 때까지 다른 요청을 처리하는 방법이 있습니까?
나는 그 말이 맞는지 또는 내가 올바른 길을 가고 있는지 확실하지 않습니다. SO가 Apache 서버에서 PHP로 긴 폴링을 권장 할 때 가능한 해결책은 무엇입니까?
왜 서버에서 처리를 일시 중지 하시겠습니까? 귀하의 사용자가 많이 기다리게하지 않겠습니까? – Joseph
Apache에서는 요청 당 스레드 모델을 사용하므로 응용 프로그램의 초기 페이지 요청에서 스레드를 사용하고 ajax 요청 (DOM로드 후 호출 됨)은 별도의 스레드를 사용합니다. 문제는 대량 트래픽이 수천 개의 스레드를 생성하고 궁극적으로 서버를 사용하지 않도록 설정하는 것입니다. –
아약스/PHP 긴 폴링 페이지로드를 무작위로 (cca 모든 4-5로드) 너무 많은 시간이 걸리는 시작한 후 비슷한 문제가있었습니다 ... 현재 및주의 경우에만 PHP에서 sleep() 의해 해결 된 어떤 식 으로든, 그리고 timewait 기능을 javascript로 옮겼습니다. 이제는 javascript가 새로운 PHP 실행을 요청하고 있습니다. 10 초이지만 페이지로드가 이제는 괜찮은 것 같습니다. –