2009-06-04 4 views
4

Perl/CGI 응용 프로그램에서 제어되는 대량 메일 스케줄러를 작성 중이며 별도의 작업을 실행하기 위해 CGI 프로그램을 포크하는 "좋은"방법을 배우고 싶습니다. 사람은 그것을해야합니까? 또는 Gearman 또는 TheSchwartz과 같은 별도의 작업 대기열 엔진을 실행하는 오버 헤드가 suggested recently 인 경우 더 나은지 확인하는 것이 좋습니다. CGI :: Application과 같은 MVC 프레임 워크를 바닐라 CGI.pm보다 사용할 때 대답/전망이 바뀌나요? 마지막으로 나는 CGI :: Application Plugin을 염두에두고 가능한 프로젝트에서 왔는데, 이것은 "프로세스를 포크 (fork)"하는 것이 상대적으로 간단하게 호출 할 수있게 해줍니다.Perl CGI 프로그램을 실행하여 장기 실행 작업을 포착하려면 어떻게해야합니까?

답변

9

Proc :: Daemon을보세요. 가장 간단한 것은 작동합니다. CGI 스크립트에서 CGI 비즈니스 (입력을 받고 브라우저에 응답을 반환)를 수행 한 다음 포크를 수행하고 프로세스를 대몬 화하고 부모를 종료시키는 Proc :: Daemon :: init()을 호출합니다. 그런 다음 스크립트 (현재 데몬)가 장기 실행 작업을 수행하고 완료되면 종료합니다. 데몬으로 실행하는 동안 무언가 (파일, 데이터베이스 레코드)를 업데이트하려고하므로 후속 CGI 호출이 수행 한 작업 (진행 상황)을 확인할 수 있습니다.

0

POE과 같은 것이 유용할까요? 포크 형보다는 이벤트 중심 형이지만 사용자의 요구를 충족시킬 수 있습니다.

관련 문제