PHP pcntl_fork 进程控制函数

  • 定义和用法

    pcntl_fork - 在当前进程当前位置产生分支(子进程)。译注:fork是创建了一个子进程,父进程和子进程 都从fork的位置开始向下继续执行,不同的是父进程执行过程中,得到的fork返回值为子进程 号,而子进程得到的是0。
  • 版本支持

    PHP4 PHP5 PHP7
    支持 支持 支持
  • 语法

    pcntl_fork( void )
    pcntl_fork() 函数创建一个子进程,这个子进程仅PID(进程号) 和PPID(父进程号)与其父进程不同。fork怎样在您的系统工作的详细信息请查阅您的系统 的fork(2)手册。
  • 参数

    参数 必需的 描述
  • 返回值

    成功时,在父进程执行线程内返回产生的子进程的PID,在子进程执行线程内返回0。失败时,在 父进程上下文返回-1,不会创建子进程,并且会引发一个PHP错误。
  • 示例

    下面例子演示多进程示例:
    $pid = pcntl_fork();
    //父进程和子进程都会执行下面代码
    if ($pid == -1) {
       //错误处理:创建子进程失败时返回-1.
        die('could not fork');
    } else if ($pid) {
        //父进程会得到子进程号,所以这里是父进程执行的逻辑
        pcntl_wait($status); //等待子进程中断,防止子进程成为僵尸进程。
    } else {
        //子进程得到的$pid为0, 所以这里是子进程执行的逻辑。
    }
    
  • 相关页面

    pcntl_waitpid() - 等待或返回fork的子进程状态
    pcntl_signal() - 安装一个信号处理器