fork父子进程执行顺序
使用一段代码来检查父子进程执行顺序
<?php $str = "hello world!" . PHP_EOL; // 派生一个子进程,子进程会复制主进程中的上下文 // pcntl_fork 函数在主进程中返回子进程的进程ID,在子进程返回0,失败在主进程返回-1 $pid = pcntl_fork(); // 这里开始的代码,会被主进程、子进程共同执行 echo $str; if($pid > 0) { echo "我是主进程,我的pid是" . getmypid() . ' -- 子进程的pid是 ' . $pid . PHP_EOL; echo "我要先休息2秒" . PHP_EOL; sleep(2); echo "2秒到了,主进程休息完成!主进程结束!" . PHP_EOL; } elseif($pid == 0) { echo "我是子进程,我的pid是". getmypid() . PHP_EOL; echo "我只休息1秒" . PHP_EOL; sleep(1); echo "1秒到了,子进程休息完成!子进程结束!" . PHP_EOL; }else{ echo "我是主进程,开启子进程失败" . PHP_EOL; }
如果不休息的话,父进程执行完毕,开始子进程,所以可以用这样的方法使得父进程等子进程执行完毕自己再结束