阅读量:0
在 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。