下面是我的代码段
<?php
/**
* Created by PhpStorm.
* User: lipeiran
* Date: 2017/2/10
* Time: 下午3:51
*/
/*
$a = 3;
$pids= array(); // 进程PID数组
for($i = 0;$i<2;$i++)
{
$pids[$i] = pcntl_fork();// 产生子进程,而且从当前行之下开试运行代码,而且不>继承父进程的数据信息
echo " start ".$pids[$i]." a is ".$a."\n";
if(!$pids[$i])
{
exit(0);
}
// echo " end ".$pids[$i]."\n";
}
*/
for ($i = 1; $i <= 5; ++$i) {
$pid = pcntl_fork();
if (!$pid) {
sleep(1);
print "In child $i\n";
exit($i);
}
else{
echo "this in for main $i\n";
}
}
if(!$pid){
echo "out is child \n";
}
else{
echo "this is mainProcess \n";
}
while (pcntl_waitpid(0, $status) != -1) {
$status = pcntl_wexitstatus($status);
echo "Child $status completed\n";
};
http://www.php.net/manual/zh/function.pcntl-fork.php 这个上面好多可以看的讲解,以及代码段
这个代码段说明,每次fock以后主进程&子进程都会执行for循环里面的代码,而只有主进程执行for之外的代码,而且通过waitpid来监控子进程的状态。