temkaa/signal
最新稳定版本:v0.0.2
Composer 安装命令:
composer require temkaa/signal
包简介
A simple library for subscribing to PHP signals
关键字:
README 文档
README
A simple signal subscriber manager implementation.
Installation
composer require temkaa/signal
This package automatically detects what OS are you using for both testing and production confidence. For Windows it uses
sapi_windows_set_ctrl_handler, for Linux - pcntl_signal.
Package allows you to specify subscribers for specific PHP signals. To use this package you need:
- If you use Windows, you need to have functions
andenabled; - If you use any other OS you need to have
pcntlextension and functionspcntl_async_signals,pcntl_signalenabled.
Example:
<?php use Temkaa\Signal\SignalSubscriberInterface; use Temkaa\Signal\SignalManager; use const PHP_EOL; use const SIGTERM; final class SigtermListener implements SignalSubscriberInterface { private bool $isCalled = false; public function handle(): void { $this->isCalled = true; echo 'Got sigterm signal, closing database connection...'.PHP_EOL; } public function isCalled(): bool { return $this->isCalled; } } $sigtermListener = new SigtermListener(); $signalManager = new SignalManager(); $signalManager->subscribe($sigtermListener, SIGTERM); posix_kill(posix_getpid(), SIGTERM); // $sigtermListener->isCalled is true at this point assert($sigtermListener->isCalled() === true);
You can also unregister specific listeners, check if any listener is subscribed to specific signal, etc:
<?php use Temkaa\Signal\SignalSubscriberInterface; use Temkaa\Signal\SignalManager; use const PHP_EOL; use const SIGTERM; final class SigtermListener implements SignalSubscriberInterface { public function handle(): void { echo 'Got sigterm signal, closing database connection...'.PHP_EOL; } } $sigtermListener = new SigtermListener(); $signalManager = new SignalManager(); $signalManager->subscribe($sigtermListener, SIGTERM); assert($signalManager->hasSubscriber(SIGTERM) === true); assert($signalManager->getSubscriber(SIGTERM) === $sigtermListener); $signalManager->unsubscribe(SIGTERM); assert($signalManager->hasSubscriber(SIGTERM) === false);
统计信息
- 总下载量: 18
- 月度下载量: 0
- 日度下载量: 0
- 收藏数: 0
- 点击次数: 0
- 依赖项目数: 1
- 推荐数: 0
其他信息
- 授权协议: MIT
- 更新时间: 2024-09-25