2012-02-14 45 views
1

我是從我的PHP代碼 調用賣出腳本 子進程從主流程的bash shell PHP單獨

foreach ($some_array) { 
    shell_exec(nohup $code); 
} 

像上面

我希望所有shell_exec調用獨立工作從郵件的過程,是我們稱爲shell腳本的PHP執行

但它不工作,因爲我預計所有的shell_executions開始之後,前一個完成

所以,我怎樣才能使這個shell_exec電話作爲獨立的子進程,他們沒有等到對方提前補充件

感謝

+0

我發現這裏的解決方案http://stackoverflow.com/questions/222414/asynchronous-shell-exec-in-php – soField 2012-02-14 21:54:43

回答

-1

它們發送到後臺

shell_exec("nohup somecommand &"); 
           ^---run job in background 
+0

不起作用 – soField 2012-02-14 21:29:39

+0

不起作用,至少在PHP 5.5中。嘗試將這個簡單的腳本保存爲'test.php'並運行它:'<?php sleep(1); shell_exec('nohup php test.php &');?''''''ps -e'上會看到PHP進程列表不斷增加。 – 2014-08-11 15:47:21

0

添加「 &'到您要執行的命令的末尾,以便它在後臺運行。

0

對於命令序列,括號內括起來,然後追加&符號,但一定要重定向標準輸出,標準錯誤,否則的地方你的腳本將掛在等待比如:

<?php 

exec('(sleep 10; echo "finished" | mail [email protected]) &> /dev/null &'); 

?> 

http://us.php.net/manual/en/function.exec.php

+0

我認爲包含'>/dev/null'在這裏非常重要, – cwallenpoole 2012-02-14 21:07:38

+0

你測試這個 – soField 2012-02-14 21:34:38

+0

@soField這不是我的;我從php.net的解釋中拿到了它,但是我在我的一個網站上做了類似的事情,它的效果很好。 – 2012-02-14 21:57:20