- 授权协议: GPL
- 开发语言: PHP
- 操作系统: 跨平台
- 软件首页: https://github.com/beyosoft/multiworker
- 软件文档: https://github.com/beyosoft/multiworker/blob/master/README.md
- 官方下载: https://github.com/beyosoft/multiworker
软件介绍
MultiWorker PHP多进程管理器
Multiworker是纯PHP实现的多进程管理器,使用master-worker进程模型,适用于命令行下的多进程调度、并发处理、工作进程崩溃自动恢复、单实例限制。
项目主页 https://github.com/beyosoft/multiworker
bug及使用反馈:zhangxugg@163.com
一、特点:
使用master-worker进程模型,稳定可靠。 Multiworker运行实例由一个master进程(称为主进程)、多个Worker进程(称为工作进程或子进程)组成,主进程主要工作进程的生成、和退出状态监测。一旦有工作进程异常退出,主进程就会立即再生成一个工作进程,接替其继续工作。因为主进程不参与具体业务逻辑,几乎没有异常退出的可能。
轻量级、无外部依赖。只有一个类文件、可适用用于任何项目和框架。
支持单实例功能,配合crontab可实现高可靠性的后台任务。 实际业务中,我们往往希望一个任务由单实例运行,只有前一个实例异常退出时,新的实例才能成功运行,结合crontab和Multiworker的单实例功能,可以很容易实现一个高可靠的后台任务。
并发任务调度处理。不同的工作进程可负责不同的任务处理,相比单进程可极大提高整体任务处理效率。
工作进程状态监测。当工作进程以指定的正常状态退出后,主进程不会再生产新的子进程,当所有工作进程以指定的正常状态退出时,主进程认为任务处理完毕,自己同时退出。
信号控制和进程运行控制。实例在运行中,向主进程发送SIGTERM信号时,主进程会向每个子进程发送信号,告知其及时退出,当所有工作进程退出后,主进程也退出。
二、环境要求
因为使用Linux信号控制,需要posix扩展,只支持Linux类系统,不支持windows。
需要php 5.3+。
三、注意事项
工作进程可以共用一个数据库连接资源吗?
绝对不能,每个工作进程必须重新建立一个数据库连接,否则会引发不可意料的结果。可以在onWorkerStart回调中关闭主进程已经建立的数据库连接,再重新打开即可。
如何实现不同的工作进程执行不同的任务?
onWorkerStart回调的参数,就是进程的PIN(process index number), 它从0开始编号,可以通过判断PIN从而让子进程完成不同的任务。
可靠性如何?
久经生产环境实际长久运行,请放心使用。
UNIX环境高级编程
W.Richard Stevens Stephen A.Rago、Stephen A. Rago / 人民邮电出版社 / 2006-2 / 99.00元
本书是被誉为UNIX编程“圣经”的Advanced Programming in the UNIX Environment一书的更新版。在本书第一版出版后的十几年中,UNIX行业已经有了巨大的变化,特别是影响UNIX编程接口的有关标准变化很大。本书在保持了前一版的风格的基础上,根据最新的标准对内容进行了修订和增补,反映了最新的技术发展。书中除了介绍UNIX文件和目录、标准I/O库、系统数据文件和信......一起来看看 《UNIX环境高级编程》 这本书的介绍吧!