gos / pnctl-event-loop-emitter
Pnctl event emitter for event loop
Installs: 1 216 495
Dependents: 0
Suggesters: 0
Security: 0
Stars: 22
Watchers: 3
Forks: 3
Open Issues: 1
Requires
- php: >=5.4
- evenement/evenement: ~2.0|~3.0
- react/event-loop: ~0.4.0|^0.5
README
NOTE - This repository is no longer maintained
PNCTL Event Loop Emitter
Brings PNCTL event to event loop.
Install
composer require gos/pnctl-event-loop-emitter
Usage
use React\EventLoop\Factory; use Gos\Component\PnctlEventLoopEmitter\PnctlEmitter; $loop = Factory::create(); $pnctlEmitter = new PnctlEmitter($loop); $pnctlEmitter->on(SIGTERM, function () use ($loop) { //do something $loop->stop(); }); $pnctlEmitter->on(SIGINT, function () use ($loop) { //do something $loop->stop(); }); $loop->run();
Example
Handle double CTRL+C
use React\EventLoop\Factory; use Gos\Component\PnctlEventLoopEmitter\PnctlEmitter; $loop = Factory::create(); $pnctlEmitter = new PnctlEmitter($loop); $pnctlEmitter->on(SIGINT, function () use ($loop) { $this->logger->notice('Press CTLR+C again to stop the server'); if (SIGINT === pcntl_sigtimedwait([SIGINT], $siginfo, 5)) { $this->logger->notice('Stopping server ...'); //Do your stuff to stop the server $loop->stop(); $this->logger->notice('Server stopped !'); } else { $this->logger->notice('CTLR+C not pressed, continue to run normally'); } }); $loop->run();