2014-09-03 45 views
0

我試圖運行我的phantomjs腳本,像4個線程/進程。這個想法是用不同的參數異步運行它。 因此Im做這樣的事情(在一個循環中):多個system()調用是否在不同的線程/進程中工作?

$arguments = array('argument1', 'argument2', 'argument3'); 
foreach($arguments as $argument){ 
    system('phantomjs my_script.js ' . $argument . ' > output_for_' . $argument . ' 2> errors_for_' . $argument . ' &'); 
} 

將phantomjs實例asynchronnously工作?或不 ?我知道這是非阻塞系統調用,並且php腳本繼續執行 - 但我不知道每個由php system()調用的phantomjs實例是否與另一個phantomjs實例異步。

+0

爲什麼不簡單地使用線程而不是你認爲可能是線程的東西? – 2014-09-03 07:59:27

+0

據我所知,php不支持線程。我對麼 ? @ N.B – user1652792 2014-09-03 08:03:14

+0

看看http://php.net/pthreads – 2014-09-03 08:13:31

回答

0

不,system()本身不產生新的進程或線程。

+0

那麼,即使它是非阻塞的調用它同步運行?例如: [command1 2&1>/dev/null&] [command2 2&1>/dev/null&] (我用[]分隔命令] Thoose two commands will run one by one?還是並行? – user1652792 2014-09-04 09:48:57

+0

用這個特殊的例子,假設這些是兩個獨立的'system()'調用,它們將並行運行。但是這並不取決於'system()'本身,只是命令行環境如何工作。就PHP /'system()'而言,它只是等待返回狀態碼和結果輸出(在這裏你將ara重定向到/ dev/null,所以不要等待那個)。 – Narf 2014-09-04 10:53:53

+0

謝謝@Narf解釋它。 – user1652792 2014-09-08 09:53:08

相關問題