travail/parallel-prefork

一个简单的prefork服务器框架

v0.2.1 2017-08-30 08:23 UTC

This package is auto-updated.

Last update: 2024-09-14 19:58:25 UTC


README

名称

Parallel\Prefork - 一个简单的prefork服务器框架

概要

<?php
use \Parallel\Prefork;

require_once '/path/to/vendor/autoload.php';

$pp = new Prefork([
    'max_workers'  => 5,
    'trap_signals' => [
        SIGHUP  => SIGTERM,
        SIGTERM => SIGTERM,
    ],
]);

while ($pp->signalReceived() !== SIGTERM) {
    if ($pp->start()) {
        continue;
    }

    // ... do some work within the child process ...

    $pp->finish();
}

$pp->waitAllChildren();

安装

要将此软件包安装到您的项目中,请通过composer添加以下片段到您的 composer.json 文件中。然后运行 composer install

"require": {
    "travail/parallel-prefork": "dev-master"
}

如果您想从github安装,请添加以下内容

"repositories": [
    {
        "type": "vcs",
        "url": "git@github.com:travail/php-Parallel-Prefork.git"
    }
]

描述

Parallel\Prefork 支持优雅的关闭和运行时重新配置。

依赖

  • posix
  • pcntl

方法

__construct

Parallel\Prefork __construct([
    'max_workers'          => int $max_workers,
    'err_respawn_interval' => int $err_respawn_interval,
    'trap_signals'         => [int $signal_trapped_in_parent_process => int $signal_sent_to_child_processes],
])

实例化。接受一个数组作为参数。支持的参数如下。

max_workers

工作进程数(默认:3)

trap_signals

要捕获的信号数组。管理进程将捕获数组键中列出的信号,并将指定的信号(如果有)发送到所有工作进程。

err_respawn_interval

在工作进程异常退出后阻止启动子进程的秒数(默认:1)

start

bool start()

主例程。在子进程中返回 undef。在管理进程中接收到在 trapSignals 数组中指定的信号后返回 true

finish

void finish(int $exit_code)

子进程应调用此函数进行终止。可选参数为退出代码。仅适用于子进程。

signalAllChildren

void signalAllChildren(int $signal)

向所有工作进程发送信号。仅适用于管理进程。

waitAllChildren

void waitAllChildren()

阻塞,直到所有工作进程退出。仅适用于管理进程。

signalReceived

int signalReceived()

返回捕获的管理进程信号。

感谢

Kazuho Oku

作者

travail

许可证

此库是免费软件。您可以在与PHP相同的条款下重新分配和/或修改它。