[PHP] 简单多进程并发

前端之家收集整理的这篇文章主要介绍了[PHP] 简单多进程并发前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

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

 

<?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相关文章