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实现同样的目标吗?