使用一段代碼來檢查父子進程執行順序
<?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; }
如果不休息的話,父進程執行完畢,開始子進程,所以可以用這樣的方法使得父進程等子進程執行完畢自己再結束