웹 스크립트에서 장시간 실행되는 PHP CLI 스크립트를 호출하는 방법과 CLI 스크립트를 대몬 화하는 가장 좋은 방법을 읽은 후, 아파치가 CLI 스크립트를 처리하는 방식에 문제가 발생했습니다. 내 지역에 CentOS 7/PHP에이 작업을 수행 할 때웹 스크립트에서 PHP CLI 스크립트를 호출하면 Apache가 여러 하위 프로세스를 생성합니다.
print `echo /usr/bin/php -q longThing.php | at now`;
7 아파치가 VM을 2.4.6 /, 그것은 매력처럼 작동하지만, 동일한 : 는 this blog post에 따르면, 최선의 선택은 그런 짓을하는 것입니다 내 프로덕션 서버 Centos 6.8/PHP 7/Apache 2.4.25 (cPanel)의 코드는 Apache에서 100 초의 하위 프로세스를 생성하여 CPU 및 메모리 리소스를 빠르게 소모하여 수정하기 위해 재부팅해야합니다. PHP CLI 프로세스를 신속하게 종료하더라도 이미 아파치는 일종의 루프에 빠져있다. 내 이해는 위의 제안 된 코드를 사용하여, 당신은 CLI 프로세스에서 아파치의 연관성을 없애지 만 분명히 그렇지 않다는 것이다. 누가 잘못 될지 알려줄 수 있습니까? 필요한 경우 실제 코드와 내 프로덕션 서버에 대한 자세한 정보를 게시 할 수 있습니다. 감사
그냥주의 : 여기서'-q'를 사용하면 왜 매개 변수를 추가하지 않습니까? – JustOnUnderMillions
나는'php longThing.php >> /path/to/log/log.log 2> & 1 &'을 사용하여 작업을 백그라운드로 푸시하고 로그 파일에 모두 로그한다. – JustOnUnderMillions
-q를 블로그 게시물에서 제안한대로 사용한다. 웹 스크립트를 호출 한 아파치 프로세스에서 웹 스크립트를 폐기하십시오. 의도는 cli 스크립트를 daemonize하여 apache (a)가 자식 프로세스로 생성하지 않고 (b) cli 스크립트가 아파치를 다시 시작한 후에도 살아남을 수 있도록하는 것입니다. – Grindlay