2011-07-07 78 views
0

我不明白爲什麼有超過1個處理時我從一個瀏覽器爲什麼shell_exec執行多個進程?

在PHP代碼運行run.php一次,我有以下幾點:

run.php

<?php 
shell_exec("php theprocess.php > /dev/null 2>&1 &"); 
?> 

theprocess.php

<?php 
$z = 1; 
while ($z <= 20) { 
    echo $z . "\n"; 
    $z++; 
    sleep(3); 
} 
?> 

我從瀏覽器執行run.php(例如:http://localhost/run.php

然後我輸入:ps aux | grep的PHP

[email protected] [~]# ps aux | grep php 
username 27272 0.0 1.5 89504 64468 ?  R 17:33 0:00 php theprocess.php 
username 27274 0.0 1.2 89504 49872 ?  R 17:33 0:00 php theprocess.php 
username 27276 0.0 0.6 89504 28676 ?  R 17:33 0:00 php theprocess.php 
username 27278 0.0 0.0 22280 3704 ?  R 17:33 0:00 php theprocess.php 
username 27280 0.0 0.0 1940 508 ?  S+ 17:33 0:00 grep php 

我不明白爲什麼它顯示超過1個theprocess.php過程?

爲什麼它仍然在後臺運行?它應該終止theprocess.php完成任務。如何做到這一點?

+3

你已經把'theprocess.php'放到了最後一個'&'背景中。如果它坐在那裏等待輸入,它會永遠等待。 –

+0

啊,好了,現在我還不夠,也許在腳本的末尾我可以包含'kill -9 PID'......但我不明白爲什麼當我執行一次時顯示多個進程。 – user622378

+0

您在測試過程中刷新頁面多少次?每次都會啓動一個新的過程... –

回答

1

我修復了這個問題!

從網頁運行腳本時,它不會視爲PHP cli。

更換

shell_exec("/usr/bin/php theprocess.php > /dev/null 2>&1 &"); 

shell_exec("/usr/bin/php-cli theprocess.php > /dev/null 2>&1 &"); 

我再也不用在後臺運行多個procress。

相關問題