icy8/process 问题修复 & 功能扩展

解决BUG、新增功能、兼容多环境部署,快速响应你的开发需求

邮箱:yvsm@zunyunkeji.com | QQ:316430983 | 微信:yvsm316

icy8/process

Composer 安装命令:

composer require icy8/process

包简介

README 文档

README

介绍

php多进程和守护进程的执行器,只支持在命令行运行。 由于项目使用了pcntl_async_signals函数做信号分发,所以要求你的php版本>=7.1。

进程控制流程

 send SIGUSR1 ->    /process1    \
  ^                / process2     \
master  ------------ process3      SIGUSR1 exit(1)
  ^                \ process4     /
  |                 \process5    /
  |send SIGTERM
  |
 kill

软件架构

  1. php >= 7.1

  2. pcntl扩展

  3. posix扩展

安装教程

composer require icy8/process

使用说明

  1. 多进程模型

    如果master进程被kill,子进程也会被强制退出。

    <?php
    use icy8\process\Worker;
    $handle        = new Worker();
    $handle->total = 2;// 需要运行的进程数
    // $handle->max = 10;// 允许同一时间打开的进程数上限 0为无上限;通常建议设定一个大于零的数值
    $handle->run(function ($worker) {
        // 闭包里是你的业务代码    
        while (1) {
            var_dump(time());
            sleep(1);
        }
    });

    自由分配每个进程的工作逻辑:

    <?php 
    use icy8\process\Worker;
    $handle        = new Worker();
    $processes     = [
        function () {
            while (1) {
                var_dump('process 1');
                sleep(1);
            }
        },
        function () {
            while (1) {
                var_dump('process 2');
                sleep(1);
            }
        },
        function () {
            while (1) {
                var_dump('process 3');
                sleep(1);
            }
        },
        function () {
            while (1) {
                var_dump('process 4');
                sleep(1);
            }
        },
    ];
    // 此时你不再需要手动配置$handle->total属性
    $handle->run($processes);
  2. 守护进程模型

    守护进程在制作过程中已经将标准输出重定向到/dev/null

    执行:php daemon.php --start|stop|status

    <?php
    use icy8\process\Daemon;
    $daemo = new Daemon();
    $daemon->run(function () {    
        sleep(10);        
    });

    如果你想要更自由一些:

    <?php
    use icy8\process\Daemon;
    $daemon = new Daemon();
    $daemon->start();
    // 所有业务逻辑写在下面
    // 此时的脚本文件不再自动支持 --start|stop|status参数
    $i = 0;
    while($i < 10) {
        $i++;
        var_dump($i);
    }
  3. 多进程结合守护进程使用

    这种模式下,通常多进程模型中的master进程就是当前的守护进程。

    <?php
    use icy8\process\Worker;
    use icy8\process\Daemon;
    
    $daemon = new Daemon();
    //$daemon->pidFile = '/www/test.pid';// 允许自定义一个存放进程id的文件路径,一定要设置绝对路径
    $daemon->run(function () {
        // 放到守护进程运行
        $handle        = new Worker();
        $handle->total = 2;
        $handle->run(function ($worker) {
            while (1) {
                var_dump(time());
                sleep(1);
            }
        });
    });

统计信息

  • 总下载量: 16
  • 月度下载量: 0
  • 日度下载量: 0
  • 收藏数: 0
  • 点击次数: 1
  • 依赖项目数: 1
  • 推荐数: 0

GitHub 信息

  • Stars: 0
  • Watchers: 1
  • Forks: 0
  • 开发语言: PHP

其他信息

  • 授权协议: MIT
  • 更新时间: 2022-07-11

承接程序开发

PHP开发

VUE

Vue开发

前端开发

小程序开发

公众号开发

系统定制

数据库设计

云部署

网站建设

安全加固