写了一个测试程序,可以看一下执行流程。
子进程要exit否则会进行递归多进程,父进程不要exit否则终止多进程
for($i = 0; $i < 10; $i++){
$pid[$i] = pcntl_fork();
if($pid[$i] == -1){
}elseif($pid[$i]){
echo 'pcntl:start';
echo $pid[$i],PHP_EOL;
pcntl_wait($staus);
echo "$i; end",PHP_EOL;
}else{
echo "$i run...",PHP_EOL;
sleep(10);
exit; //子进程要exit否则会进行递归多进程,父进程不要exit否则终止多进程
}
}
echo "succeed", PHP_EOL;
执行
pcntl:start18908
0 run...
0; end
pcntl:start18913
1 run...
1; end
pcntl:start18915
2 run...
2; end
pcntl:start18918
3 run...
3; end
pcntl:start18925
4 run...
4; end
pcntl:start18926
5 run...
5; end
pcntl:start18928
6 run...
6; end
pcntl:start18929
7 run...
7; end
pcntl:start18930
8 run...
8; end
pcntl:start18932
9 run...
9; end
succeed