mshavliuk/mshavliuk-signal-events-bundle
Composer 安装命令:
composer require mshavliuk/mshavliuk-signal-events-bundle
包简介
Symfony bundle to handle process signals (kill, ctrl+c etc.)
README 文档
README
About
This bundle provides service, that emits events for every handled UNIX signals into your Symfony application. It relies on PCNTL php-extension, which you can check by running
$ php --ri pcntl
Expected output:
pcntl
pcntl support => enabled
Installation
Add the mshavliuk/mshavliuk-signal-events-bundle package to your require section in the composer.json file.
$ composer require mshavliuk/mshavliuk-signal-events-bundle
Usage
Automatic startup
By default it will handle every possible signals and startup after console.command event which is basically in every
php bin/console run.
Configure the bundle in your config.yml:
mshavliuk_signal_events: startup_events: - console.command # to handle signals while console commands (default) - kernel.request # to handle signals while requests processing handle_signals: - SIGINT # ctrl+c - SIGTSTP # ctrl+z
Manual
To prevent automatic startup you can specify empty arrays for startup_events config:
mshavliuk_signal_events: startup_events: [] # prevent startup
In that case you can manually inject Mshavliuk\MshavliukSignalEventsBundle\Service\SignalHandlerService and configure
signals to handle:
public function __construct(SignalHandlerService $service) { $service->addObservableSignals(['SIGINT', 'SIGHUP']); }
Handling signal events
You can register any callback function to handle specific event via EventDispatcherInterface::addListener function.
See the following example:
$eventDispatcher->addListener(SignalEvent::NAME, function($event, $eventName) use ($output) { if($event->getSignal() === SIGINT) { $output->writeln('Ctrl+C signal handled'); } });
Also you can create special listener class and bind its public method for process any signals:
services.yaml:
App\EventListener\SignalListener: tags: - { name: kernel.event_listener, event: signal.handled, method: onSignal }
SignalListener.php:
class SignalListener { protected $logger; public function __construct(LoggerInterface $logger) { $this->logger = $logger; } public function onSignal($event) { $this->logger->info('handle signal event', ['event' => $event]); } }
For more information read the official Symfony documentation.
License
See LICENSE.
统计信息
- 总下载量: 5
- 月度下载量: 0
- 日度下载量: 0
- 收藏数: 0
- 点击次数: 0
- 依赖项目数: 0
- 推荐数: 0
其他信息
- 授权协议: MIT
- 更新时间: 2019-06-02