firegate666 / daemon
为您的自定义处理器提供简单PHP守护进程包装,易于与initd或supervisor集成
Requires
- php: >=5.4.0
- psr/log: 1.0.0
This package is not auto-updated.
Last update: 2024-09-14 18:20:30 UTC
README
这个项目是关于什么的
您的项目有后台任务吗?您想在PHP中编写它们?您需要一个简单的框架来附加任务吗?
请尝试使用我为守护进程任务编写的包装器。
如何使用它
这相当简单,看看示例守护进程以了解您需要实现的内容。
通过composer将它们集成到项目中
composer require firegate666/daemon
创建自己的守护进程处理器和处理器工厂,实现HandlerInterface
和HandlerInterfaceFactory
。设置自己的启动php脚本,查看exampled.php
使用start-stop-daemon设置
将您的自己的init脚本复制到/etc/init.d/
,查看etc/init.d/exampled.daemon.sh
。
使用supervisor设置
下载并安装Supervisord。在Ubuntu或类似系统上,使用apt-get install
相当容易。将您的supervisor配置复制到/etc/supervisor/conf.d/
,查看etc/supervisor/conf.d/exampled.conf
。将您的自己的init脚本复制到/etc/init.d/
,查看etc/init.d/exampled.supervisor.sh
。
控制它
现在您可以控制您的守护进程了
/etc/init.d/exampled start
/etc/init.d/exampled stop
/etc/init.d/exampled restart
/etc/init.d/exampled status
这个玩意儿是如何工作的
通过命令行脚本可以启动守护进程,查看exampled.php
。编写自己的处理器和工厂,并将它们注入到守护进程中。当守护进程启动时,它会使用您预定义的处理器创建4个子进程。如果某个子进程失败,则会启动一个新的子进程。每个子进程都有自己的处理器实例并启动运行循环。
如果守护进程本身收到关闭信号(SIGTERM,SIGINT),则该信号会传递给其子进程,守护进程会等待它们的终止,然后自己关闭。
待办事项
- 在短时间内死亡太多子进程的检测
- 适当的日志消息和级别
- 定义级别指南