使用 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 process 或 defunct process。為了防止殭屍兒童程序,只需在父程序結束時新增 pcntl_wait($status) 即可。
pnctl_wait 暫停父程序的執行,直到子程序退出。
值得注意的是,使用 SIGKILL 訊號不能殺死 zombie process。