• 企业400电话
  • 微网小程序
  • AI电话机器人
  • 电商代运营
  • 全 部 栏 目

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    php实现 master-worker 守护多进程模式的实例代码

    具体代码如下所示:

    ?php
    class Worker{
      public static $count = 2;
      public static function runAll(){
        static::runMaster();
        static::moniProcess();
      }
      //开启主进程
      public static function runMaster(){
        //确保进程有最大操作权限
        unmask(0);
        $pid = pcntl_fork();
        if($pid > 0){
          echo "主进程进程 $pid \n";
          exit;  
        }else if($pid == 0){
          if(-1 === posix_setsid()){
              throw new Exception("setsid fail");
          }
          for ($i=0; $i  self::$count; $i++) {
            static::runWorker();
          }
          @cli_set_process_title("master_process");
        }else{
          throw new Exception("创建主进程失败");
        }
      } 
      //开启子进程
      public static function runWorker(){
        unmask(0);
        $pid = pcntl_fork();
        if($pid > 0){
          // echo "创建子进程 $pid \n";
        }else if($pid == 0){
          if(-1 === posix_setsid()){
            throw new Exception("setsid fail");
          }
          @cli_set_process_title("worker_process");
          while(1){
            sleep(1);
          }
        }else{
          throw new Exception("创建子进程失败");
        }
      }
      //监控worker进程
      public function moniProcess(){
        while( $pid = pcntl_wait($status)){
          if($pid == -1){
            break;
          }else{
            static::runWorker();
          }
        }
      }
    }
    Worker::runAll();
    ps -aux
    USER    PID %CPU %MEM  VSZ  RSS TTY   STAT START  TIME COMMAND
    root     1 0.0 0.0 18200 3076 pts/0  Ss+ 14:05  0:00 bash
    root     6 0.0 0.0 18208 3252 pts/1  Ss  14:06  0:00 bash
    root    19 0.0 0.0 18204 3248 pts/2  Ss+ 14:11  0:00 bash
    root    64 0.0 0.2 348488 8320 ?    Ss  15:32  0:00 master_process
    root    65 0.0 0.2 348488 8400 ?    Ss  15:32  0:00 worker_process
    root    66 0.0 0.2 348488 8400 ?    Ss  15:32  0:00 worker_process
    root    67 0.0 0.0 36640 2804 pts/1  R+  15:32  0:00 ps -aux

    执行命令 kill 65,杀死进程 65 则master_process 进程会再自动开启一个子进程

    USER    PID %CPU %MEM  VSZ  RSS TTY   STAT START  TIME COMMAND
    root     1 0.0 0.0 18200 3076 pts/0  Ss+ 14:05  0:00 bash
    root     6 0.0 0.0 18208 3252 pts/1  Ss  14:06  0:00 bash
    root    19 0.0 0.0 18204 3248 pts/2  Ss+ 14:11  0:00 bash
    root    64 0.0 0.2 348488 8320 ?    Ss  15:32  0:00 master_process
    root    66 0.0 0.2 348488 8400 ?    Ss  15:32  0:00 worker_process
    root    68 0.0 0.1 348488 5796 ?    Ss  15:34  0:00 worker_process
    root    69 0.0 0.0 36640 2728 pts/1  R+  15:34  0:00 ps -aux

    总结

    以上所述是小编给大家介绍的php实现 master-worker 守护多进程模式的实例代码,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对脚本之家网站的支持!
    如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!

    您可能感兴趣的文章:
    • PHP守护进程化在C和PHP环境下的实现
    • PHP守护进程的两种常见实现方式详解
    • php脚本守护进程原理与实现方法详解
    • PHP程序员玩转Linux系列 使用supervisor实现守护进程
    • PHP高级编程实例:编写守护进程
    • shell脚本作为保证PHP脚本不挂掉的守护进程实例分享
    • php守护进程 加linux命令nohup实现任务每秒执行一次
    • PHP程序守护进程化实现方法详解
    上一篇:PHP抽象类和接口用法实例详解
    下一篇:PHP defined()函数的使用图文详解
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯 版权所有

    《增值电信业务经营许可证》 苏ICP备15040257号-8

    php实现 master-worker 守护多进程模式的实例代码 php,实现,master-worker,守护,