dcousineau/phorever

PHP的基于角色的进程和守护进程管理

v0.1.0 2013-04-10 22:24 UTC

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)
  • 达到一定阈值后放弃
  • 在异常行为时通知

即将推出的功能

  • 配置重生和通知行为
  • 为更细粒度的控制提供您自己的自定义事件监听器类的钩子
  • 状态监控和统计日志