mod_perl에서이 프로젝트를 실행하면 호스트에 대한 정보가 표시됩니다. 이 페이지에는 사용자가 호스트를 ping/nslookup/traceroute 할 수있는 드롭 다운이있는 텍스트 상자가 있습니다. 출력은 tail -f
과 같은 텍스트 상자에 표시됩니다.mod_perl에서 Perl을 사용하여 'Jobs'테일러링
CGI에서 잘 작동합니다. 사용자가 핑 (ping)을 요청하면 AJAX 호출을 서버로 보내면 기본적으로 임시 파일로 출력되는 핑이 시작됩니다. 그 다음에 이어지는 ajax 호출은 파일을 '꼬리'(tail)하여 출력이 ping이 완료 될 때까지 갱신되도록합니다. 작업이 끝나면 임시 파일이 제거됩니다.
그러나 mod_perl에서 어떤 일을 하든지 나는 좀비 프로세스를 만드는 것을 멈출 수 있습니다. IPC::Run
등을 사용하여 모든 것을 시도해 보았습니다. 결국 시스템 호출은 mod_perl 하에서는 권장되지 않습니다.
제 질문은 아마도 더 좋은 방법이있을 수 있습니다. 커맨드 라인 작업을 생성하고 mod_perl 하에서 작동 할 테일링 출력을 생성 할 수있는 CPAN 모듈이 있습니까? 나는 단지 몇 가지 제안을 찾고있다.
나는 내가 일종의 '작업'데몬을 만들 수 있음을 알고 있으며, 세부 사항을 알려주고 업데이트를 받는다. 명령을 실행하고 상태 등을 추적합니다. 그러나 더 간단한 방법이 있습니까?
미리 감사드립니다.
브라이언 디 포이의 도움이 도움이되는지 확인하십시오. http://stackoverflow.com/questions/2711520/how-can-i-run-perl-system-commands-in-the-background/2715086#2715086 – DVK
예 그 게시물에서 CPAN 모듈 중 일부를 보았습니다. 나를 좋은 방향으로 인도했다. 하지만 AJAX 스크립트가 호출 될 때마다 작업 상태를 유지하는 모듈이 필요합니다. 이는 AJAX 스크립트가 호출 될 때마다 작업 상태 (ID 또는 무언가)에 관계없이 file/db /에서로드 할 수 있습니다. 누구든지이 작업을 수행하는 CPAN 모듈을 알고 있습니까? 계속 찾아 볼게. – Matthew
솔직히 말하면 솔직하게 말해서 원래 작업에 대한 고유 한 ID (예 : $$ 및 timestamp의 조합)를 만들고 파일 이름에 통합 한 다음 원래 요청에서 ID를 반환합니다. 페이지에 저장된 ... 각 AJAX 호출은 ID를 서버로 전송하고 로그를 읽는 스크립트는 로그 파일 이름을 다시 구성합니다. – DVK