1. 程式人生 > >popen——php多程序利器

popen——php多程序利器

偷笑標題有點兒誇張,

我(們,本來想用們的,還會去掉了)執行系統命令常常用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