2014-09-03 21 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

相关问题