Jex’s Note

PHP Multi-Process

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

Comments