Example code:
echo "Start \n";
$pid = pcntl_fork();
echo "XD \n";
if ($pid)
{
//$rtn = pcntl_waitpid($pid, $status);
echo "father \n";
$sum = 0;
for ($i = 0; $i <= 1000000; $i++)
{
$sum += $i;
}
}
else
{
echo "child \n";
}
echo "End \n";
result :
Start
XD
father
XD
child
End
End
註 :
- 用 pid 判斷是主程序還是子程序
- 從結果可以看出 fork 出來的子程序會從 pcntl_fork() 下一行開始執行
- fork 後不會等到主程序做完才做子程序, 是分時分段執行的, 也就是多程序的概念
如果要等子程序做完主程序再做的話要在主程序裡加上
$rtn = pcntl_waitpid($pid, $status);
結果為 :
Start
XD
XD
child
End
father
End