[PHP] 简单多进程并发

2019-02-17 01:53:10来源:博客园 阅读 ()

新老客户大回馈,云服务器低至5折

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

 

<?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--;    
        }   
}

 

  


原文链接:https://www.cnblogs.com/taoshihan/p/10385000.html
如有疑问请与原作者联系

标签:

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有

上一篇:Lumen框架—升级改造之路-开篇

下一篇:编写单元测试的良好准则