php多进程并发

发布于:2020-08-08 17:23:32

一段通过 pcntl扩展fork方法实现多进程并发操作的代码

function insert($data){
    $cnt = count($data);  //测试数组大小
    $slice = 9;  //需要调用的进程数量
    $master = array_chunk($data,floor($cnt/($slice+1)));
   
    $childList = [];
    echo "进程开始\r\n";
    while($slice >= 0)
    {
        $pid = pcntl_fork();   //利用fork创建子进程
        if($pid > 0){
            $childList[$pid] = 1;
            echo $pid."\r\n";
            //$pid>0表示当前还在执行父进程的代码
            //这里最好啥都不做,每次执行pcntl_fork都会执行这里的代码。
            //这里的代码执行完之后 会将$pid设置为0,然后jump到pcntl_fork代码之后,重新做判断;
        }elseif($pid == 0){
            //这里写我们的逻辑
            //子进程执行完之后务必需要关闭;
            exit();
        }else
        {
            //程序发生错误也需要关闭程序
            exit();
        }
        $slice--;
    }
 
    // 等待所有子进程结束后回收资源
    while(!empty($childList)){
        $childPid = pcntl_wait($status);
        if ($childPid > 0){
            unset($childList[$childPid]);
        }
    }
}


阅读 120+

一片空白

父爱如山,不善表达。回想十多年前,总记得父亲有个宽厚的肩膀,小小的自己跨坐在上面,越过人山人海去看更广阔的天空,那个时候期望自己有一双翅膀,能够像鸟儿一样飞得高,看得远。虽然父亲有时会和自己开玩笑,但在做错事的时候会受到严厉的训斥。父亲有双粗糙的大手掌。