当前位置: 首页 > 软件库 > 开发工具 > PHP开发工具 >

MultiWorker

PHP 多进程管理器
授权协议 GPL
开发语言 PHP
所属分类 开发工具、 PHP开发工具
软件类型 开源软件
地区 国产
投 递 者 笪煌
操作系统 跨平台
开源组织
适用人群 未知
 软件概览

MultiWorker PHP多进程管理器

Multiworker是纯PHP实现的多进程管理器,使用master-worker进程模型,适用于命令行下的多进程调度、并发处理、工作进程崩溃自动恢复、单实例限制。

项目主页 https://github.com/beyosoft/multiworker

bug及使用反馈:zhangxugg@163.com

一、特点:

  1. 使用master-worker进程模型,稳定可靠。 Multiworker运行实例由一个master进程(称为主进程)、多个Worker进程(称为工作进程或子进程)组成,主进程主要工作进程的生成、和退出状态监测。一旦有工作进程异常退出,主进程就会立即再生成一个工作进程,接替其继续工作。因为主进程不参与具体业务逻辑,几乎没有异常退出的可能。

  2. 轻量级、无外部依赖。只有一个类文件、可适用用于任何项目和框架。

  3. 支持单实例功能,配合crontab可实现高可靠性的后台任务。 实际业务中,我们往往希望一个任务由单实例运行,只有前一个实例异常退出时,新的实例才能成功运行,结合crontab和Multiworker的单实例功能,可以很容易实现一个高可靠的后台任务。

  4. 并发任务调度处理。不同的工作进程可负责不同的任务处理,相比单进程可极大提高整体任务处理效率。

  5. 工作进程状态监测。当工作进程以指定的正常状态退出后,主进程不会再生产新的子进程,当所有工作进程以指定的正常状态退出时,主进程认为任务处理完毕,自己同时退出。

  6. 信号控制和进程运行控制。实例在运行中,向主进程发送SIGTERM信号时,主进程会向每个子进程发送信号,告知其及时退出,当所有工作进程退出后,主进程也退出。

二、环境要求

  1. 因为使用Linux信号控制,需要posix扩展,只支持Linux类系统,不支持windows。

  2. 需要php 5.3+。

三、注意事项

  1. 工作进程可以共用一个数据库连接资源吗?

    绝对不能,每个工作进程必须重新建立一个数据库连接,否则会引发不可意料的结果。可以在onWorkerStart回调中关闭主进程已经建立的数据库连接,再重新打开即可。

  2. 如何实现不同的工作进程执行不同的任务?

    onWorkerStart回调的参数,就是进程的PIN(process index number), 它从0开始编号,可以通过判断PIN从而让子进程完成不同的任务。

  3. 可靠性如何?

    久经生产环境实际长久运行,请放心使用。

  • 软件简介 MultiWorker PHP多进程管理器 Multiworker是纯PHP实现的多进程管理器,使用master- worker进程模型,适用于命令行下的多进程调度、并发处理、工作进程崩溃自动恢复、单实例限制。 一、特点: 使用master-worker进程模型,稳定可靠。 Multiworker运行实例由一个master进程(称为主进程)、多个Worker进程(称为工作进程或子进程)组

 相关资料
  • Warning: This information refers to third-party sites, products, or modules that are not maintained by the Expressjs team. Listing here does not constitute an endorsement or recommendation from the Ex

  • NodeJS可以感知和控制自身进程的运行环境和状态,也可以创建子进程并与其协同工作,这使得NodeJS可以把多个程序组合在一起共同完成某项工作,并在其中充当胶水和调度器的作用。本章除了介绍与之相关的NodeJS内置模块外,还会重点介绍典型的使用场景。 开门红 我们已经知道了NodeJS自带的fs模块比较基础,把一个目录里的所有文件和子目录都拷贝到另一个目录里需要写不少代码。另外我们也知道,终端下的

  • 如果项目依赖各种外界的进程,应使用 foreman 来管理它们。

  • 细节 进程一般分为批处理进程、交互进程和守护进程三类。 守护进程总是活跃,在系统启动时通过脚本自动启动,或由 root 启动,通常在后台运行。 一个进程可以拥有子进程。当父进程终止时,它的子进程也随之终止;而子进程终止时,父进程通常可以继续运行。 init 进程为根进程,所有进程都是它的子进程 ps 显示进程信息,选项可省略 “-” aux 以 BSD风格 显示进程 常用 -efH 以 Syste

  • PROCESS MANAGEMENT 在任何时间,Linux 系统通常同时运行数百个,甚至数千个进程。进程只是一个正在运行和使用资源的程序。它包括终端,Web 服务器,任何正在运行的命令,任何数据库,GUI 界面等等。任何优秀的 Linux 管理员(特别是黑客)都需要了解如何管理他们的流程以优化他们的系统。例如,一旦黑客控制了目标系统,他们可能想要找到并停止某个进程,如防病毒应用程序或防火墙。为此

  • ps 命令查看进程 ps 用来显示操作系统上的进程,包括进程 UID,PID,PPID,CPU 使用情况等。ps aux $ ps aux USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND root 1 0.0 0.3 128176 6860 ? Ss 12:36

  • Important: StrongLoop Process Manager 不能在Windows系统上运行 Running StrongLoop PM(执行进程管理器) Running StrongLoop PM as a transient process(运行StrongLoop PM作为一个过渡过程) Connecting to Process Manager from Arc(从 Arc

  • 主要内容:反引号运算符,system() 函数,实例,fork() 函数,实例,实例,Kill 函数,实例Perl 中你可以以不同的方法来创建进程。 本教程将讨论一些进程的管理方法。 你可以使用特殊变量 $$ 或 $PROCESS_ID 来获取进程 ID。 %ENV 哈希存放了父进程,也就是shell中的环境变量,在Perl中可以修改这些变量。 exit() 通常用于退出子进程,主进程在子进程全部退出后再退出。 所有打开的句柄会在子程序中被 dup() 函数复制, 所有关闭进程所有句柄不会影响其