2010-12-13 4 views
0

저는 현재 대부분 네트워크 바운드가 될 50 + PHP 작업자 스크립트 인스턴스를 생성하려고합니다. 그들은 중앙 작업 대기열에서 대기열에서 제외하고 작업을 실행 한 다음 대기열에서 더 많은 작업을 가져옵니다. 나는 이것이 (1) 작업이 실행되는 동안에 만있을 것으로 기대합니다.PHP 프로세스를 생성하고 종료하는 가장 효율적인 방법은 무엇입니까?

시작시 이러한 프로세스를 생성해야합니다. PHP 스크립트를 루프의 명백한 exec 외에도 생성하는 가장 좋은 방법은 무엇입니까? 나 또한 정상적으로 종료 할 수 있기를 바랍니다.

나는 종료 통지를 찾고에 대한 몇 가지 코드를 삽입하지만 PCNTL functions

+0

php-fpm으로 nginx로 전환 한 다음 fpm으로 알려주시겠습니까? : D – davidosomething

+0

그는 CLI 스크립트에 웹 서버를 사용하는 이유는 무엇입니까? – ceejayoz

+0

오 이런 PHP는 싶었어 – davidosomething

답변

1

봐 특별히 pcntl_fork처럼()

기능 PHP의 청소기 방법

감사가 있다면 확신하지 못했습니다 수

우리가 현재 사용하는 방식은 새로운 프로세스가 시작될 때마다 루프 내에서 작업을 수행하고 종료합니다. 메인 루프가 처리 정보 등을 계속 처리하는 동안 ...

1

Gearman을보세요. 당신이 말하고있는 것 : 일자리와 노동자.

1

가능하면 PHP 스크립트를 포킹하지 마십시오. 그것은 물건을 지저분하게 만들고 심지어 PHP 명성의 Rasmus Lerdof가 나쁜 아이디어라고 생각하는 것입니다. PHP는 포크를 수행하는 부모 프로세스가 수행하는 장기 실행 프로세스를위한 것이 아닙니다.

더 나은 솔루션 (그러나 유일한 것은 아닙니다)은 pythons supervisord (파이썬 지식이 필요하지 않습니다)와 같은 것을 사용하여 PHP 작업자를 관리하는 것입니다. 죽은 직원을 다시 시작하거나, 미리 설정된 시간 이후에 다시 시작하거나, 메모리 제한을 초과 할 때 캠을 다시 시작합니다.

추가 승리를 얻으려면 기어맨을 사용하여 작업 일정을 잡을 수도 있습니다.

+0

아마도 serverfault에 가장 적합한 별도의 질문,하지만 아마도 메모리 제한을 초과하면 프로세스를 다시 시작하도록 요청합니까? 수퍼바이저 문서에서 이것을 볼 수 없습니다 – BenLanc

+0

수퍼 랜스는 http://pypi.python.org/pypi/superlance 의 첫 번째 옵션입니다. 또 하나는 데몬 등을 모니터 할 수있는 http://mmonit.com/입니다. 모든 종류의 것들을 위해. 바라기를 이것은 당신을 시작하게하기에 충분하다. –

관련 문제