pcntl_fock & pcntl_waitpid 初学

下面是我的代码段

<?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来监控子进程的状态。



猜你喜欢

转载自blog.csdn.net/lipeiran1987/article/details/54971934