kafliansky/signaler

提供信号监听器栈的Signaler库。

v0.1.0 2022-03-24 10:22 UTC

This package is auto-updated.

Last update: 2024-09-24 15:44:07 UTC


README

test Software License Total Downloads

内容

安装

composer require kafkiansky/signaler

用法

使用 \SIGINT 信号的简单示例。

use Kafkiansky\Signaler\SeldSignalFactory;
use Psr\Log\NullLogger;

$factory = new SeldSignalFactory(new NullLogger());

$signaler = $factory->subscribe([
    \SIGINT => function () use ($worker): void {
        $worker->stop();
    }
]);

while ($signaler->isTriggered() === false) {
    //
}

此库的主要目的是防止信号监听器被 pcntl_signal 函数替换,如果它已经被供应商代码配置。库会仔细保存之前的信号监听器,并在您的之后调用它们。

例如。

use Kafkiansky\Signaler\SeldSignalFactory;
use Psr\Log\NullLogger;

pcntl_signal(\SIGINT, function (): void {
    // This function will still be called after all your listeners.
});

$factory = new SeldSignalFactory(new NullLogger());

$signaler = $factory->subscribe([
    \SIGINT => function () use ($worker): void {
        $worker->stop();
    }
]);

while ($signaler->isTriggered() === false) {
    //
}

测试

$ composer test

许可证

MIT许可证(MIT)。有关更多信息,请参阅许可证文件