PSGI/Plack 응용 프로그램에서 포크하는 올바른 방법은 무엇입니까?PSGI/Plac 응용 프로그램 (Perl)에서 포크하는 올바른 방법
한편 PSGI 응용 프로그램은 "백엔드에 무관심"하므로 다른 방법 (FastCGI, CGI 등)을 사용하여 실행할 수 있습니다. 하지만 다른 한편으로는 FastCGI 응용 프로그램에서 포크 앞/뒤의 FCGI :: Request 객체로 몇 가지 조작을 수행합니다.
그럼 어떻게해야합니까?
- 그냥 포크 :
- (어떤 조작?) 마법 조작과 포크를 수행
- 재 작성 애플리케이션 아키텍처 => 외부 데몬 프로세스로 모든 무거운 작업을 이동합니다.
오, 이해하고 있지만 다른 것을 묻고있었습니다. 예, FCGI, CGI, Starman과 같은 PSGI 서버 등을 사용하여 다양한 백엔드를 사용하여 PSGI 응용 프로그램을 실행할 수 있습니다. 하지만 어떻게해야합니까? 애플 리케이션 - 내 애플 리케이션 runned, 어떤 환경에서 모르겠지만이 _current_ 환경 적절한 포크에 대한 몇 가지 특별한 초기화가 필요합니다 ? –
"포킹"앱은 컨테이너에 의해 처리됩니다. 모든 의도에 대해 FCGI 프로세스가 앱이고 Starman 서비스가 앱입니다. 코드의 컨테이너 역할을하며 프록시와 코드 간의 인터페이스 역할을합니다. 예를 들어 Apache/FastCGI를 선택하면 아파치에게 포크 할 fastcgi 프로세스의 수와 fastcgi 서버에 전달할 URI를 알려줍니다. 앱을 수동으로 포크하는 것은 아닙니다. –
당신은 완전히 옳았습니다. 그러나 뭔가 다른 것에 대해 묻고 있습니다 :) 아마 내 나쁜 영어 죄책감입니다. 내 응용 프로그램에서 "수동"포크에 대해 물어 보았습니다. 예를 들어 -> app recv 일부 요청 및 매우 시간이 많이 걸릴 수있는 일부 중량급 작업을 수행해야합니다. 그래서 fork() 호출을 사용하여 자식 프로세스를 생성하고이 작업을 자식 프로세스에서 실행합니다. IPC에 관한 질문, 사용자가 언제 결과를 얻는 지 등 - 그 장면 뒤에 머물러있게하십시오. 주된 문제점은이 수동 fork() 호출입니다. –