2011-08-05 5 views
0

대기열에있는 일련의 PHP 스크립트를 실행하고 작업을 처리해야합니다. PHP Cli 또는 PHP/Apache에서 실행될 때 최대 10 분 이상 소요될 수 있습니다. 스크립트의 인스턴스가 여러 개있을 수 있습니다. 이것은 반복적으로 일어날 필요가있다. PHP/Apache는 사용자 상호 작용이 없으며 백엔드/usr/bin/curl 프로그램과 상호 작용합니다.PHP CLI 또는 아파치 (PHP를 통한 장기 실행 작업)

필자는 PHP-Cli가 스크립트가 실행될 때마다 PHP 인터프리터와 모든 모듈을로드해야한다는 것을 알고 있습니다. PHP/Apache에서는 이전에로드되었으므로 기술적으로 PHP/Apache가 조금 더 빠르며 메모리 용량이 적습니다 (SO의 다른 게시물 당)

PHP CLI 또는 전용 Apache를 통해이 스크립트를 실행해야합니까? 백그라운드 처리를 위해 시스템에 설치 되었습니까? 그래서 기술적으로

# php processtask.php --taskId=1 & 
# php processtask.php --taskId=2 & 

VS

# /usr/bin/curl http://localhost/processtask.php?taskId=1 & 
# /usr/bin/curl http://localhost/processtask.php?taskId=2 & 

로딩이 더 후 리소스 사용을 일으킬 수 있습니다 때마다, 나는 루프와 다른 스레드에서 동일한 작업을 수행하기 위해 컬 라이브러리를 사용하는 스크립트와 같은 다른 데몬을 사용할 수 있습니다 곱슬 곱슬 경우 (이것은 아마도 PHP가 아닐 것입니다)

답변

1

오프라인 PHP 스크립트를 실행하는 것보다 다른 이유로 Apache를 설치, 구성 및 유지 관리하는 것은 바보 같습니다. 모든 추가 요구 사항과 잘못 될 수있는 부분을 생각해보십시오. 간단하게 유지하고 CLI를 사용하십시오.

편집 : 아무도 프로세스를 실행할 수 없으므로 Apache를 실행하는 경우 보안 레이어를 추가해야합니다.

2

나는 PHP를 사용하여 CLI 기반 스크립트를 실행하여 다양한 대기열을 통해 하루에 1 백만 항목을 초과하여 실행합니다 (때때로 그 수량의 배수를 사용함). 또한 웹 서버를 통해 이동하는 일부 구형 시스템이 있으며 이렇게하는 추가 오버 헤드는 많은 수의 작업을 수행하려고 할 때 크게 제한 될 수 있습니다.

웹 기반 작업도 시간이 초과되지 않도록 추가 작업이 필요합니다. 명령 줄에서 실행하거나 셸 스크립트 및/또는 CRON을 통해 시작하는 것이 가장 좋은 방법입니다.

+0

CLI에서 실행하는 것이 더 빠릅니까? 서비스로 실행되도록 구성 할 수 있습니까? –

관련 문제