2012-05-15 2 views
3

PHP 웹 페이지에서 만들고있는 백그라운드 시스템 호출의 PID를 찾으려고합니다. PHP 스크립트에서 'ps -A'를 호출하여 브라우저에 인쇄하면 터미널에서 'ps -A'를 호출하는 것과 같은 결과를 얻지 못합니다. 이것은 PHP가 터미널에서 호출 한 백그라운드 프로세스의 PID를 볼 수 있기 때문에 특히 실망 스럽습니다. 그러나 PHP에서는 볼 수 없습니다.PHP가 system() 명령의 PID를 얻습니다.

system("process &"); 
system("ps -A"); 

을하지만 그 터미널에서 '추신 -A'을 호출과 같은 출력을 생성하지 않습니다 즉

, 내 코드는 다음과 같습니다. 그뿐 아니라 '프로세스'가 터미널에서 나타나지만 PHP 호출에서는 나타나지 않습니다.

아무도 나에게 설명 할 수있는 이유는 무엇이며 어떻게 내 PHP 코드 내에서 '프로세스'의 PID를 얻을 수 있습니까? (기록을 위해, 나는 exec()와 passthru()를 사용하는 것을 포함하여 여러 가지 코드를 사용해 보았는데, 지금까지 아무 것도 작동하지 않았다.)

고마워.

+0

하나의 옵션을 사용하는 것입니다 .. 마지막 명령의 PID를 얻을, 그래서 것 [proc_open 및 proc_get_status] (http://stackoverflow.com/a/4731666/82769) –

답변

2
echo $! 

system("process & echo $!"); 
+0

그 제안은 작동하는 것처럼 들리지만 그럴 수는 없습니다. 대신, 열리는 파일을 열 수 없다는 오류를 인쇄하기 시작했습니다 ('process'는 파일에서 입력을 가져 와서 출력을 파일로 리디렉션 함). 내 다른 시도에서이 오류가 발생하지 않았습니다. – MattS

+0

인수가 필요한 경우 잘 전달 했습니까? 두 번째 시스템 호출을 "echo $!"로 바꾸십시오. 전에 그랬던 것처럼 첫 번째를 떠나십시오. – miki

+0

나는 논쟁을 통과했습니다. 난 그냥 그들을 별도로 전화를 시도했다 (지금은 exec ("&"); 시스템 ("echo $! ")), 아무것도 시스템 (에코) 호출에서 인쇄됩니다. 왜 그럴까요? – MattS