php popen异步执行php程序
2019-02-26 本文已影响0人
金星show
popen()函数通过创建一个管道,调用fork()产生一个子进程
其中有两个参数:

pro.php
<?php
$start = time();
$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,start>>>>".PHP_EOL;
$data = [];
for($i=0;$i<5;$i++)
{
while(!feof($process[$i])){
$read = fread($process[$i],1024);
if(trim($read)){
array_push($data,$read);
}
}
pclose($process[$i]);
}
$end = time();
$diff = $end - $start;
echo "计时{$diff}".PHP_EOL;
var_dump($data);
run.php
<?php
$data = ['time'=>date("YmdHis")];
sleep(1);
echo json_encode($data);