在PHP中使用pcntl库

时间:2011-02-26 16:31:29

标签: php fork

我试图使用pcntl库来分叉php中的子进程。 这是我的简单代码:

  $pid = pcntl_fork();
  if ($pid != -1) {
    if ($pid) {
       print "In the parent: child PID is $pid\n";
       pcntl_waitpid($pid, $status);
       echo "Back in parent\n";
    } 
    else {
        print "In the child\n";
        exit(19);
    }
   } 
   else {
        echo "Fork failed!\n";
   }

我得到了结果:

在孩子中

这意味着父母没有做任何事情或者某种程度上孩子抹去了父母所做的事情(我不知道为什么......)

如果我评论该行: pcntl_waitpid($ pid,$ status); 我得到以下结果:

在父级中:子级PID为11394回到父级

在这种情况下,孩子没有做任何事情...... 怎么会发生这种情况?我不明白这是怎么回事.. 顺便说一句,我正在研究XAMPP。 谁能给我一些见解?

非常感谢!

1 个答案:

答案 0 :(得分:2)

使用latest version of PHP(5.3.5)运行时,您的示例将按发布方式运行。请记住,这是command line binary。如果您将PHP作为Apache模块运行,那么不应该使用 pcntl函数。

我得到的输出是(pid对你来说不同):

In the parent: child PID is 4759
In the child
Back in parent