首页 > Web开发 > 详细

[PHP] 简单多进程并发

时间:2019-02-15 18:39:21      阅读:230      评论:0      收藏:0      [点我收藏+]

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

 

<?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] 简单多进程并发

原文:https://www.cnblogs.com/taoshihan/p/10385000.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!