标题有点儿夸张,
我(们,本来想用们的,还会去掉了)运行系统命令常常用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