2010-03-31 2 views

답변

4

내가 보통 HTTP 요청이 완료된 후 일어날 필요가 아무것도 실행되도록 정리 핸들러를 사용 : 당신이 정말로 포크를해야 할 경우

$r->push_handlers(PerlCleanupHandler => sub { print "I'm doing stuff!" }); 

, 당신은 그것을 일반적인 방법을하지 말아야을, fork 된 프로세스가 파일 기술자와 소켓처럼 아파치가 필요로하는 다양한 자원을 방해 할 것이기 때문에이 모든 것을 올바르게 처리하기가 어렵다. 대신 Apache2::SubProcess을 사용해보세요.

+0

'PerlCleanupHandler'로 데몬 프로세스를 실행해도 괜찮습니까? 무제한의 실행 시간을 가진 프로세스입니까? – codeholic

+1

데몬을 시작하는 경우 확실히 하위 프로세스를 사용하고 싶습니다. 그렇지 않으면 당신은 깨끗한 단계에 영원히 머물러있는 아파치 쓰레드를 묶을 것이다. – friedo

+0

'Apache2 :: SubProcess'가'ModPerl :: Registry'와 함께 작동하는지 알고 있습니까? 때문에 그것을 실행할 수 없습니다 http://stackoverflow.com/questions/2559093/why-doesnt-apache2subprocess-spawn-my-subprocess – codeholic

0

reverse proxy을 실행하는 것이 좋습니다. 백엔드에는 자원 집약적 인 작업을 처리하는 중량 프로세스와 정면에서 경량 프로세스를 사용하여 정적 컨텐츠를 반환하는 등의 쉬운 작업을 처리합니다. 무거운 프로세스는 자신이하고있는 일을 마치기를 기다릴 필요가 없기 때문에 쉬운 일을 묶어 두지 않습니다.

+0

프런트 엔드에서 백 엔드 안전하게 일부 데이터를 전달해야합니다. 그리고 나는 데이터가 올바른 방향으로 나아갈 수 있어야합니다. 따라서 코드 체크섬 제어 등 – codeholic