firegate666/daemon

为您的自定义处理器提供简单PHP守护进程包装,易于与initd或supervisor集成

0.1.2 2015-10-09 01:39 UTC

This package is not auto-updated.

Last update: 2024-09-14 18:20:30 UTC


README

这个项目是关于什么的

您的项目有后台任务吗?您想在PHP中编写它们?您需要一个简单的框架来附加任务吗?

请尝试使用我为守护进程任务编写的包装器。

如何使用它

这相当简单,看看示例守护进程以了解您需要实现的内容。

通过composer将它们集成到项目中

composer require firegate666/daemon

创建自己的守护进程处理器和处理器工厂,实现HandlerInterfaceHandlerInterfaceFactory。设置自己的启动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),则该信号会传递给其子进程,守护进程会等待它们的终止,然后自己关闭。

待办事项

  • 在短时间内死亡太多子进程的检测
  • 适当的日志消息和级别
  • 定义级别指南