gos / pnctl-event-loop-emitter
此软件包已被弃用且不再维护。没有推荐替代包。
PNCTL事件循环发射器
v0.1.7
2018-04-09 11:12 UTC
Requires
- php: >=5.4
- evenement/evenement: ~2.0|~3.0
- react/event-loop: ~0.4.0|^0.5
README
注意 - 此存储库不再维护
PNCTL 事件循环发射器
将 PNCTL 事件带到事件循环中。
安装
composer require gos/pnctl-event-loop-emitter
使用方法
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();
示例
处理双次 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();