标题有点儿夸张,
我(们,本来想用们的,还会去掉了)运行系统命令常常用exec,system之类的,
但是今天发现了proc_open和popen,proc_open自称比popen多一些功能,确实,proc_open有很多功能,可以与程序交互,
——但是,他是同步的,就是说一个程序没有运行结束,不能运行下一个!就没办法异步多进程了。
——但,popen是异步的
上代码:
pro.php
<?php $process = array(); for($i=0;$i<5;$i++) { echo $i.' opening ... '.chr(10); $process[$i] = popen('php '.dirname(__FILE__).'/run.php', 'r'); sleep(1); } echo 'OK>>'.chr(10); sleep(3); for($i=0;$i<5;$i++) { $read = fread($process[$i], 64); echo $read; pclose($process[$i]); echo $i.' closed'.chr(10); sleep(1); }
run.php
<?php while(1) { $echo =getmypid() .'->'. date("YmHis").chr(10); echo $echo ; system('echo '.$echo.'> logp'); sleep(5); }
执行php pro.php