使用 fork 建立子程序

PHP 內建函式 pcntl_fork 用於建立子程序。pcntl_fork 與 unix 中的 fork 相同。它不接受任何引數並返回整數,可用於區分父程序和子程序。請考慮以下程式碼進行說明

<?php
    // $pid is the PID of child
    $pid = pcntl_fork();
    if ($pid == -1) {
         die('Error while creating child process');
    } else if ($pid) {
         // Parent process
    } else {
         // Child process
    }
?>

正如你所看到的,-1 在 fork 中是一個錯誤,並且沒有建立子項。在建立孩子時,我們有兩個獨立的 PID 程序。

當父程序在子程序之前完成時,這裡的另一個考慮因素是 zombie processdefunct process。為了防止殭屍兒童程序,只需在父程序結束時新增 pcntl_wait($status) 即可。

pnctl_wait 暫停父程序的執行,直到子程序退出。

值得注意的是,使用 SIGKILL 訊號不能殺死 zombie process