2012-10-11 3 views
14

정확한 답변을 찾기 위해 많이 검색했지만 아무 것도 찾지 못했습니다.exec 함수를 사용하여 PHP 백그라운드 프로세스

응답을 기다리지 말라는 명령의 마지막에 & 등 많은 사람들이 언급했다.

exec("/usr/bin/php bg.php &"); 

을하지만 나를 위해 작동하지 않습니다 배경 bg.php 을 실행하는 예를 들어
,이 권장되었다. 주 스크립트는 bg.php의 완전한 실행을 기다립니다.

나는 또한 로그 파일에 bg.php 출력을 쓰려고하지만 배경 스크립트는 출력을 생성하지 않습니다. 그것은 어떤 과정을 수행하고 데이터베이스에 무엇인가를 씁니다.

그냥 스크립트를 실행하여 bg.php를 실행하고 끝내기를 기다리지 마십시오.

정확한 코드를 알려주세요.

exec($cmd . " > /dev/null &"); 

답변

18
당신은 어딘가에도 보통/dev에 프로그램 출력을 라우팅 할

는/당신이 화면을 사용하여 고려 적이 있습니까? 분리 된 프로세스에서 실행되는 화면 세션을 시작할 수 있습니다. 여전히 실행중인 경우

screen -d -m -S my_bg_session /usr/bin/php bg.php 

그런 다음 나중에 연결할 수 :

screen -r my_bg_session 
+0

잘 작동! 하지만/dev/null 디렉토리 란 무엇입니까? 이 명령이 출력을 파일에 기록합니까? – Aliweb

+1

/dev/null은 전송 된 데이터를 삭제하기 만하면됩니다. 프로그램 출력이 필요한 경우이 파일을 일부 파일로 라우팅 할 수 있습니다 – ninaj

관련 문제