개발! 딱 깔끔하고 센스있게!

nohup : 백그라운드에서 PHP 프로세스 실행 본문

개발 스크랩 메모/PHP

nohup : 백그라운드에서 PHP 프로세스 실행

렉사이 2020. 12. 13. 23:54

php 프로세스를 배경으로 실행하고 php 파일에서 시작하려고 합니다.

일부 정보: php 버전 5.2.17, php 안전 모드 닫기, linux 시스템.나는 exec 로부터 이 과정을 시작하여, 이미 shell u exec 시도를 해봤다.

나는 모든 문서를 075507777777으로 세웠다.

$pid = exec("nohup $cmd > /dev/null 2> /dev/null & echo $!"); 

만약 내가 이 문구를 인쇄한다면, 나는 이것을 얻게 되면, PID 는 됩니다.

nohup /usr/local/bin/php5 /.../../file.php > /dev/null 2> /dev/null & echo $! 

만약 내가 ssh 에서 프로세스를 찾는다면

top 

나는 나의 php5 프로세스가 정확한 pid 가 있는 것을 보았다.

사용자는 루트 사용자

 PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 3533 xxxxxxxx 20 0 21356 8868 4580 S 0 0.4 0:00.13 php5 3536 xxxxxxxx 20 0 20836 8260 4428 S 0 0.4 0:00.09 php5 3539 xxxxxxxx 20 0 20836 8260 4428 S 0 0.4 0:00.09 php5 3542 xxxxxxxx 20 0 20836 8260 4428 S 0 0.4 0:00.09 php5 3545 xxxxxxxx 20 0 20836 8260 4428 S 0 0.4 0:00.09 php5 3548 xxxxxxxx 20 0 20836 8260 4428 S 0 0.4 0:00.09 php5 3551 xxxxxxxx 20 0 20836 8260 4428 S 0 0.4 0:00.09 php5 

만약 내가 시작할 과정 수첩 맨 꼭대기가 이렇다면:

PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 8141 xxxxxxxx 22 2 24048 9.9m 5344 S 10 0.5 0:00.31 php5 

문제는:아무 일도 없었던 것 같아요. 디버깅을 위해서 파일에 출력 하나를 썼어요.

ob_start(); echo "STARTING..."; writeLog(ob_get_contents()); //... function writeLog($info){ $handle = fopen("file.log", "a+"); fwrite($handle, $info); fclose($handle); } exit; 

내 파일에는 로그가 없습니다.

브라우저에서 이 파일을 시작할 경우 '디버깅' 정보가 포함된 file.log 을 찾을 것입니다.

exec /shell u exec 명령 중에 왜 일하십니까?!나는 정확한 pid 의 php 프로세스가 있지만 결과는 없다.

도와주셔서 감사합니다!

대답

php cli 환경은 웹 환경 (mod u php, fcgi 등과 다를 수 있다).스크립트를 실행할 때 스크립트가 오류로 멈출 수 있으며 웹 서버를 통해 스크립트를 호출할 수 있습니다.

디버그 스크립트.만약 ssh 서버, su, webserver 사용자, 그리고 명령에서 스크립트를 실행합니다.

만약 네가 이 점을 할 수 없다면 자신의 개발 서버를 세울 수 있다.

그곳에서 네가 이 점을 알 수 있다면 그건 어렵지 않다.

Comments