dcousineau / phorever
PHP的基于角色的进程和守护进程管理
Requires
- php: >=5.3.3
- ext-pcntl: *
- monolog/monolog: 1.2.*
- symfony/config: 2.2.*
- symfony/console: 2.2.*
Requires (Dev)
- phpunit/phpunit: 3.7.*
Suggests
- ext-json: *
This package is not auto-updated.
Last update: 2024-09-14 14:19:25 UTC
README
PHP项目的基于角色的长时间运行进程守护进程!
概述与目标
Phorever提供了一种简单的方法,通过在项目根目录中的phorever.json
文件中定义配置来启动和管理后台进程。
Phorever将自动跟踪所有正在运行的过程,根据配置的行为重新启动它们,并在异常行为时触发通知。
Phorever可以通过Composer安装,并自动放置一个二进制文件用于交互。
Phorever的最终目标是使服务器配置和长时间运行进程的监控更加简单。例如,简单的phorever start scheduler
将确保所有调度服务器所需的背景进程都在运行。
安装
Phorever提供为Composer包,并需要PHP 5.4及以上版本。要使用Phorever,只需添加
{ "require": { "dcousineau/phorever": "dev-master" } }
Composer将尝试将Phorever的可执行文件符号链接到您自己的bin文件夹。建议您确保您的composer.json
文件已更新,以定义该bin目录的位置
{ "config": { "bin-dir": "bin" } }
配置
Phorever默认从您项目根目录下名为phorever.json
的配置文件中读取。
此配置文件定义了应启动和跟踪的各个进程,它们所属的角色,日志文件应该放在哪里等。
一个示例配置文件可能看起来像这样
{ "pidfile": "./phorever_cool.pid", "timezone": "America/Chicago", "logging": { "directory": "./logs/" }, "processes": [ { "name": "Long Lived", "roles": ["roleb"], "up": "./tests/commands/longlived", "log_forwarding": true }, { "name": "Short Lived", "roles": ["rolea"], "up": "./tests/commands/shortlived", "resurrect_after": 10, "clones": 2, "log_forwarding": true }, { "name": "Runaway", "roles": ["runaway"], "up": "./tests/commands/runaway", "resurrect_after": 1, "log_forwarding": true } ] }
运行bin/phorever start rolea roleb
命令将启动“短期”和“长期”进程,前提是它们至少属于我们请求启动的角色之一。
将--daemon
参数传递给Phorever将使其在后台分叉。
项目状态
该项目在经过一些探索性编码后目前处于MVP状态。目前,它根据请求的角色启动进程,并在复活等待时间后重新启动进程。
目前不支持,但在BETA1之前迫切需要
- 守护进程化自己(无法检查自定义PID)
- 达到一定阈值后放弃
- 在异常行为时通知
即将推出的功能
- 配置重生和通知行为
- 为更细粒度的控制提供您自己的自定义事件监听器类的钩子
- 状态监控和统计日志