使用 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
。