欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

[PHP] 简单多进程并发

程序员文章站 2023-11-11 14:24:04
企邮搬家进程管理逻辑,经过简化后的功能实现 ......

 企邮搬家进程管理逻辑,经过简化后的功能实现

 

<?php
//守护进程
umask(0); //把文件掩码清0
 
if (pcntl_fork() != 0){ //是父进程,父进程退出
        exit();
}       
 
posix_setsid();//设置新会话组长,脱离终端
 
if (pcntl_fork() != 0){ //是第一子进程,结束第一子进程   
        exit();
}       
 
chdir("/"); //改变工作目录


//开启五个子进程
$worker=0;
do {

        for($i=0;$i<6;$i++){
                $pid = pcntl_fork();
                if ($pid == -1) {
                        return false;
                } elseif ($pid == 0) { //子进程,在此处处理业务逻辑

                        //todo

                        sleep(60);    
                        exit;
                } else { // parent
                        $worker++;
                        if($worker>5){
                                $id = pcntl_wait($status);
                                if ($id > 0) {
                                        $worker--;    
                                }   
                        }   
                }   
        }   
        usleep(200000);

} while (true);

while ($worker > 0) {
        $id = pcntl_wait($status);
        if ($id > 0) {
                $worker--;    
        }   
}

[PHP] 简单多进程并发