PHP的pcntl多进程实现

2025-07-16 20:56:06

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;case0:$param= array('lastid'=> $max/ $workers* $i,'maxid'=> $max/ $workers* ($i+1),);$this->executeWorker($input, $output, $param);exit;default:break;}}foreach($pidsas$i=> $pid) {if($pid) {pcntl_waitpid($pid, $status);}}?>

3、这里当pcntl_fork出来以后,会返回一个pid值,这个pid在子进程中看是0,在父进程中看是子进程的pid(>0),如果pid为-1说明fork出错了。使用一个$pids数组就可以让主进程等候所有进程完结之后再结束了

声明:本网站引用、摘录或转载内容仅供网站访问者交流或参考,不代表本站立场,如存在版权或非法内容,请联系站长删除,联系邮箱:site.kefu@qq.com。
猜你喜欢