Php 为什么父进程不等待其子进程完成执行?
我有最基本的脚本:Php 为什么父进程不等待其子进程完成执行?,php,fork,Php,Fork,我有最基本的脚本: $pid = pcntl_fork(); if ($pid == -1) { die('could not fork'); } else if ($pid) { // we are the parent echo "parent done"; pcntl_wait($status); //Protect against Zombie children echo "all done"; } else { // we a
$pid = pcntl_fork();
if ($pid == -1) {
die('could not fork');
} else if ($pid) {
// we are the parent
echo "parent done";
pcntl_wait($status); //Protect against Zombie children
echo "all done";
} else {
// we are the child
echo "Child finished";
}
当我运行它时,输出总是子级完成的。我在lighttpd服务器上运行这个 可能是您从孩子那里收到了信号,但不是退出状态,请尝试以下操作:
do {
pcntl_wait($status);
} while (!pcntl_wifexited($status));
确保状态为exit one SIGCHILD。您希望得到什么输出?在孩子回音结束之前,试着睡一会儿。我希望看到家长把一切都做完。睡眠没有什么区别。当您从lighttpd中调用fork时,fork的行为可能与您期望的不一样,我知道他们在Apache上的mod_php中为此禁用了它。你能用proc_open实现同样的目标吗?