2011-02-08 99 views
8

我認爲有很多類似的帖子,但我還沒有找到一個解決方案後搜索。Shell_exec PHP與nohup

基本上,我試圖在後臺運行兩個腳本。當我在命令行中運行它們,我打電話給我的第一個腳本後看到:

/usr/bin/nohup php script.php > nohupoutput.log & echo $! 

我已經試過...script.php > /dev/null &具有相同的結果。我得到:

/usr/bin/nohup: ignoring input and redirecting stderr to stdout 

我忽略並運行第二個。我注意到,它似乎被掛在那裏,然後按回車把我帶回machine:~folder>

/usr/bin/nohup php script2.php > nohupoutput.log & echo $! 

兩個腳本。我試圖然後將其轉換爲shell_exec命令,似乎沒有任何工作。我懷疑ignoring input有點困難,但我不確定。無論如何,以下都不起作用。它只是掛在瀏覽器:

$output = shell_exec('/usr/bin/nohup php script.php > /dev/null &'); 
$output = shell_exec('/usr/bin/nohup php script2.php > /dev/null &'); 

回答

9

嘗試:

$output = shell_exec('/usr/bin/nohup php script.php >/dev/null 2>&1 &'); 

或者:

exec('/usr/bin/nohup php script.php >/dev/null 2>&1 &'); 
+0

我得到一個模糊的輸出重定向時,我嘗試在命令行兩種。 – Rio 2011-02-08 07:34:58

+0

你使用哪個操作系統和php版本?這是一個奇怪的。 – 2011-02-08 20:22:09

2

這個建議立即進行刪除工作:

shell_exec('nohup /usr/bin/php path/to/script.php > output.txt &'); 
2
this would help you dude.. 


<?php 

function execInBackground($cmd) { 
    if (substr(php_uname(), 0, 7) == "Windows"){ 
     pclose(popen("start /B ". $cmd, "r")); 
    } 
    else { 
     exec($cmd . " > /dev/null &"); 
    } 
} 
//take note: to get your PHP_PATH, try looking at your phpinfo :) 
echo execInBackground("/usr/local/php53/bin/php 'example2.php'"); 

?> 

這是我的工作示例頁面: ()****http://affiliateproductpromotions.net/pop.php*****()