private function registerSignalHandler() { if (php_sapi_name() === "phpdbg") { // phpdbg captures SIGINT so don't bother inside the debugger return; } $onSignal = coroutine([$this, "stop"]); if (\Amp\reactor() instanceof UvReactor) { \Amp\onSignal(\UV::SIGINT, $onSignal, ["keep_alive" => false]); \Amp\onSignal(\UV::SIGTERM, $onSignal, ["keep_alive" => false]); } elseif (extension_loaded("pcntl")) { \Amp\repeat("pcntl_signal_dispatch", 1000, ["keep_alive" => false]); pcntl_signal(\SIGINT, $onSignal); pcntl_signal(\SIGTERM, $onSignal); } }
private function addSignals() { \Amp\onSignal(SIGINT, function () { exit; }); \Amp\onSignal(SIGTERM, function () { exit; }); register_shutdown_function(function () { $this->logger->alert('Clean exit. Thank you.'); if (\Amp\info()["state"] !== \Amp\Reactor::STOPPED) { \Amp\stop(); } }); return true; }