在 PHP 中,可以使用 pcntl_fork()
函数创建子进程
<?php
$childPids = [];
$numChildren = 3;
for ($i = 0; $i < $numChildren; $i++) {
$pid = pcntl_fork();
if ($pid === -1) {
die("Could not fork the process");
} elseif ($pid) {
// Parent process
$childPids[] = $pid;
echo "Parent process: Created child with PID $pid\n";
} else {
// Child process
processChild($i);
exit(0);
}
}
// Parent process waits for all children to finish
foreach ($childPids as $childPid) {
pcntl_waitpid($childPid, $status);
echo "Parent process: Child with PID $childPid exited with status $status\n";
}
function processChild($id) {
echo "Child process $id: Started\n";
// Perform some task here...
echo "Child process $id: Finished\n";
}
?>
这个示例中,我们首先定义了要创建的子进程数量($numChildren
)。然后,我们使用 for
循环创建子进程。对于每个子进程,我们使用 pcntl_fork()
函数。如果返回值为负数,表示无法创建子进程;如果返回值为正数,表示我们处于父进程中,可以将子进程的 PID 保存到 $childPids
数组中;如果返回值为零,表示我们处于子进程中,可以执行相应的任务。
在父进程中,我们使用 pcntl_waitpid()
函数等待所有子进程完成。当子进程完成时,我们可以获取它们的退出状态并输出相应的信息。
注意:pcntl_fork()
函数仅在 Unix 系统上可用,不支持 Windows。