PHP的pcntl多进程实现

 时间:2026-02-14 20:26:46

1、假设我想要启动20个进程,将1-80w的数据分成20份来做,主进程等待所有子进程都结束了才退出。

2、<?php

$max = 800000;

$workers = 20;

$pids = array();

for($i = 0; $i < $workers; $i++){

    $pids[$i] = pcntl_fork();

    switch ($pids[$i]) {

        case -1:

            echo "fork error : {$i} \r\n";

            exit;

        case 0:

            $param = array(

                'lastid' => $max / $workers * $i,

                'maxid' => $max / $workers * ($i+1),

            );

            $this->executeWorker($input, $output, $param);

            exit;

        default:

            break;

    }

}

foreach ($pids as $i => $pid) {

    if($pid) {

        pcntl_waitpid($pid, $status);

    }

}

?>

3、这里当pcntl_fork出来以后,会返回一个pid值,这个pid在子进程中看是0,在父进程中看是子进程的pid(>0),如果pid为-1说明fork出错了。

使用一个$pids数组就可以让主进程等候所有进程完结之后再结束了

  • php 多进程教程
  • linux系统下安装php的pcntl扩展
  • PHP利用Gearman来处理并行多进程问题
  • Python之多进程与多线程
  • Python多进程间同步互斥方法lock
  • 热门搜索
    cad是什么意思 部长是什么级别 6月23日是什么星座 什么天什么地的成语 清创是什么意思 帧率是什么意思 什么的野花 abs是什么 mother是什么意思 老人生日送什么礼物好