2010-08-01 3 views
-2

프로그램의 메모리가 500MB를 초과하면 PHP 프로그램을 다시 시작해야합니다. PHP 또는 셸의 모든 스크립트로 수행 할 수 있습니까?셸 명령을 사용하여 PHP 프로그램 다시 시작

+0

이 Windows 쉘 또는 Bash 또는 ksh와 같은 제품입니까? – strager

+0

그것은 리눅스 우분투에 있습니다. –

+5

이것은 메모리 누출을 극복하기위한 해킹입니까? – Borealid

답변

1

이 같이 당신의 PHP 스크립트 실행

php -d "memory_limit=500M" myscript.php 

을 그리고 그것은 영원히 할 : 나는 장기 실행 프로그램을 처리 할 때마다

while true; do php -d "memory_limit=500M" myscript.php; done 
+1

heh ... 좋은 속임수 :) 나는 이것을위한 데몬을 사용할 것이다 ... – confiq

+0

나는 쉘 스크립트 start.sh를 이렇게 작성했다. php -d "memory_limit = 500M"myscript.php true; ph -d "memory_limit = 500M"myscript.php; 일단 내가 세그먼테이션 오류 오류가 발생하는 프로그램을 실행 .... –

+0

@ 램, 스크립트는 두 번째 줄만 포함해야합니다. 내 답변에서 해결책에 대한 자연스러운 진행을 보여 주려고했습니다. 나는 당신이 어떻게 세그 폴트 (segfault)를 얻는지를 보지 못했다. 이것은 PHP에서 여러분이보고하고자하는 버그 일 것입니다. (보통 PHP 스크립트를 어떻게 정상적으로 실행하고 있습니까?) – strager

0

, 나는 확인하기 위해 몇 가지 기본적인 도구를 포함 할 그들이 여부 그들이 작성하는 오류 등. 여기 cron으로 실행되는 빠른 스크립트를 통해 제 장비 작업자가 실행 중인지 확인할 수 있습니다.

$program = 'program.php'; 

// Run the cmd to get list of running programs 
exec("ps aux | grep $program | awk '{print $12}'", $output); 

if(count($output) == 0) 
    exec("php $program > /dev/null &"); 

물론 스크립트 출력을/dev/null로 보내지 않으려는 경우가 있습니다. 실제로 메모리 사용에 문제가있는 경우 >> 연산자를 사용하여 스크립트 출력을 임시 로그로 캡처 할 수 있습니다.

관련 문제