QPM 是一个PHP 进程管理框架,可用于简化Daemon开发,项目地址在:https://github.com/Comos/qpm

截至0.2版本,QPM支持3种Supervison模式,OneForOne MultiGroupOneForOne 和 TaskFactoryMode。 不同的模式可以建立起不同的进程树组合,子进程的重启,并发控制的策略都各不相同,以适应不同的应用场景。 不同的模式对应着不同的工厂方法,例如OneForOne的创建方法是 qpm\supervisor\Supervisor::oneForOne($config);

OneForOne

方法

qpm\supervisor\Supervisor::oneForOne($config)

使用场景

所有的子进程都使用同一个回调函数或Runnable类。

配置字段

  • *runnableCallback 或 runnableClass. 类型 callable 或 qpm\process\Runnable runnableCallback是在子进程执行实际任务的回调。runnableClass在子进程种执行实际任务的类,和runnableCallback二选一。

  • quantity 类型 integer 默认1 并发数量。

  • maxRestartTimes 类型 integer 最大重启次数, 和withInSeconds配合使用。
  • withInSeconds 类型 integer 和maxRestartTimes,指示master进程在约定的时间内最大的重启次数。

例子1

<?php
//保持3个子进程并发,在子进程中执行justDoIt 函数
$config = ['runnableCallback' => 'justDoIt', 'quantity' => 3];
$sup = qpm\supervisor\Supervisor::oneForOne($config);
$sup->start();

例子2

<?php
//保持5个子进程并发,在子进程中执行 Foo::run()
//10秒内最多允许重启100次,否则主进程将异常退出
$config = ['runnableClass' => 'Foo', 'quantity' => 5, 'maxRestartTimes'=>100, 'withInSeconds'=>10];
$sup = qpm\supervisor\Supervisor::oneForOne($config);
$sup->start();

MultiGroupOneForOne

方法

qpm\supervisor\Supervisor::oneForOne($config)

使用场景

MultiGroupOneForOne是OneForOne的升级版,可管理多组OneForOne的进程。 MultiGroupOneForOne的配置是一个内嵌了若干OneForOne配置的数组。

TaskFactoryMode

任务工厂模式,任务由指定的工厂方法产生。

方法

qpm\supervisor\Supervisor::taskFactoryMode($config)

使用场景

每次子进程执行的任务各不相同,须要不同的参数、类或Run函数,因此每次的任务都由任务工厂生成。

配置字段

*factoryMethod callable 用于生成任务对象 或 callable的工厂方法。 factoryMethod 返回值可以是 qpm\process\Runnable 或 callable

  • quantity 类型 integer 默认1 并发数量。

截至0.2版本,QPM支持3种Supervison模式,OneForOne MultiGroupOneForOne 和 TaskFactoryMode。 不同的模式可以建立起不同的进程树组合,子进程的重启,并发控制的策略都各不相同,以适应不同的应用场景。 不同的模式对应着不同的工厂方法,例如OneForOne的创建方法是 qpm\supervisor\Supervisor::oneForOne($config);

OneForOne

方法

qpm\supervisor\Supervisor::oneForOne($config)

使用场景

所有的子进程都使用同一个回调函数或Runnable类。

配置字段

  • *runnableCallback 或 runnableClass. 类型 callable 或 qpm\process\Runnable runnableCallback是在子进程执行实际任务的回调。runnableClass在子进程种执行实际任务的类,和runnableCallback二选一。

  • quantity 类型 integer 默认1 并发数量。

  • maxRestartTimes 类型 integer 最大重启次数, 和withInSeconds配合使用。
  • withInSeconds 类型 integer 和maxRestartTimes,指示master进程在约定的时间内最大的重启次数。

例子1

<?php
//保持3个子进程并发,在子进程中执行justDoIt 函数
$config = ['runnableCallback' => 'justDoIt', 'quantity' => 3];
$sup = qpm\supervisor\Supervisor::oneForOne($config);
$sup->start();

例子2

<?php
//保持5个子进程并发,在子进程中执行 Foo::run()
//10秒内最多允许重启100次,否则主进程将异常退出
$config = ['runnableClass' => 'Foo', 'quantity' => 5, 'maxRestartTimes'=>100, 'withInSeconds'=>10];
$sup = qpm\supervisor\Supervisor::oneForOne($config);
$sup->start();

MultiGroupOneForOne

方法

qpm\supervisor\Supervisor::oneForOne($config)

使用场景

MultiGroupOneForOne是OneForOne的升级版,可管理多组OneForOne的进程。 MultiGroupOneForOne的配置是一个内嵌了若干OneForOne配置的数组。

TaskFactoryMode

任务工厂模式,任务由指定的工厂方法产生。

方法

qpm\supervisor\Supervisor::taskFactoryMode($config)

使用场景

每次子进程执行的任务各不相同,须要不同的参数、类或Run函数,因此每次的任务都由任务工厂生成。

配置字段

*factoryMethod callable 用于生成任务对象 或 callable的工厂方法。 factoryMethod 返回值可以是 qpm\process\Runnable 或 callable

  • quantity 类型 integer 默认1 并发数量。

QPM-PHP多进程开发-Supervisor配置参考相关推荐

  1. java开发环境的配置总结_后端实习1:Java开发环境配置处理

    后端开发用Java实现,需配置好开发环境,方便开发工作的执行. 文章汇总了个人在实习时配置环境的流程和问题. 1.下载Java SE 地址:https://www.oracle.com/java/t. ...

  2. erpnext v13 安装部署 + VSCode本地开发环境配置

    ERPNext Version-13 安装生产环境 参考链接 https://discuss.erpnext.com/t/install-frappe-erpnext-v13-beta-from-sc ...

  3. 安装OpenCV:OpenCV 3.0、OpenCV 2.4.8、OpenCV 2.4.9 +VS 开发环境配置

    1.下载和安装OpenCV SDK VS2010不用说,肯定都安装了吧.来说说当前最新的OpenCV版本2.4.8(2014年2月24日),2.4.9 (2014年4月)的下载和安装.与其说是安装,不 ...

  4. React + Typescript + Webpack 开发环境配置

    对于复杂或多人开发的 React 项目来说,管理和使用每个组件的 props . state 或许会成为一件让人头痛的事情,而为每一个组件写文档,成本也会比较大,对项目的开发效率也不是最理想的. Ty ...

  5. 开发环境配置--Ubuntu+Qt4+OpenCV(三)

    同系列文章 1. 开发环境配置--Ubuntu+Qt4+OpenCV(一) 2. 开发环境配置--Ubuntu+Qt4+OpenCV(二) 3. 开发环境配置--Ubuntu+Qt4+OpenCV(三 ...

  6. OpenGL 开发环境配置(Windows) - Visual Studio 2017 + GLFW + GLAD 详细图文教程

    OpenGL 开发环境配置(Windows) - Visual Studio 2017 + GLFW + GLAD 详细图文教程 大部分 OpenGL 是直接面向设备商的,如果开发者需要使用 Open ...

  7. 【转】【OpenCV入门教程之一】 安装OpenCV:OpenCV 3.0、OpenCV 2.4.8、OpenCV 2.4.9 +VS 开发环境配置

    本系列文章由@浅墨_毛星云 出品,转载请注明出处.   文章链接: http://blog.csdn.net/poem_qianmo/article/details/19809337 作者:毛星云(浅 ...

  8. java系统教程_Java 教程(开发环境配置+基础语法)

    Java 开发环境配置 在本章节中我们将为大家介绍如何搭建Java开发环境. window系统安装java 下载JDK 首先我们需要下载java开发工具包JDK,下载地址:http://www.ora ...

  9. 英伟达jetson tx1开发套件配置tensorflow

    英伟达jetson tx1开发套件配置tensorflow 本文为原创作品,未经本人同意,禁止转载,禁止用于商业用途!本人对博客拥有最终解释权 欢迎关注我的博客:http://blog.csdn.ne ...

最新文章

  1. python 读取excel文件 效率 时间 格式_python读取Excel文件中的时间数据
  2. WordPress目录和文件介绍
  3. docker之容器数据卷
  4. gsoap搭建WebService服务
  5. Java SE中的Bootstrap CDI 2.0
  6. NOIP模拟测试34「次芝麻·呵呵呵·长寿花」
  7. [C语言 - 10] C语言保留字
  8. Python+django网页设计入门(10):分页显示
  9. 信贷中的SAS,一份关于它的系统性内容|含案例
  10. 修图必备:Photosho 2022 for Mac
  11. java导出数据EXCEL的工具类(以spring-webmvc-4.0.4jar为基础)
  12. nginx 日志正则分割
  13. PCS7串级PID如何连线控制汽包水位三冲量
  14. Keil 安装 配置
  15. Pearson相关系数公式的四种形式及Python代码实现
  16. 2018 iOS 面试法宝+绝密文件
  17. 用HTML5画布画一个小黄人,Android 用Canvas 画几何图形,画出小黄人
  18. emlog模板开发基础2022最新指南
  19. Sql Server级联操作
  20. 闭关修炼(六)各种锁

热门文章

  1. 惠州学院计算机基础课程配套练习系统
  2. Oracle 官方学习oracle
  3. 多源异构航班航迹数据流实时融合方法研究
  4. 凌晨三点半,见证中国奥运体育代表团的第30和31块金牌!
  5. ZigBee组网机制以及数据的发送和接收
  6. 数据挖掘竞赛预测模型——五折交叉验证
  7. 源支付5.18版本亲测不提示倒版,云端+前段+后台+运行环境
  8. 最近,又有人在谈论Android的前景了!
  9. LazyAn-—《合成大西瓜》怎么做?原版游戏还原
  10. C语言一些有趣的现象(例子) (译)