Example #1
0
 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;
 }