在PHP中,pcntl_exec和exec有什么区别?

7
1个回答

3

pcntl_exec()函数与标准的(类Unix风格)exec()函数完全相同。它与常规的PHP exec()函数不同之处在于,调用pcntl_exec()的进程将被调用的进程所替代。这是创建子进程的理想方法。

以下是一个简单示例(未进行错误检查):

switch (pcntl_fork()) {
  case 0:
    $cmd = "/path/to/command";
    $args = array("arg1", "arg2");
    pcntl_exec($cmd, $args);
    // the child will only reach this point on exec failure,
    // because execution shifts to the pcntl_exec()ed command
    exit(0);
  default:
    break;
}

// parent continues
echo "I am the parent";

以下内容引自这里的评论: http://us1.php.net/manual/zh/function.pcntl-exec.php


9
我们真正想了解的是 execpcntl_exec 的相对优缺点是什么。 - ironchicken
1
@ironchicken 在执行了pcntl_exec之后,似乎php脚本不再继续执行,因为控制权已经转移到了pcntl_exec进程。我尝试在单个php文件中连续调用两次pcntl_exec,但只有第一个被调用,控制权就被移交了,程序就此结束。 - Wadih M.

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接