diff --git a/composer.json b/composer.json index 842f591..aed46e4 100644 --- a/composer.json +++ b/composer.json @@ -46,7 +46,7 @@ "symfony/var-dumper": "^6.4.11|^7.1.5" }, "suggest": { - "react/http": "Required for using the ReactPHP HTTP transport handler (^1.11 recommended)." + "ext-pcntl": "For signal handling support when using StdioServerTransport with StreamSelectLoop" }, "autoload": { "psr-4": { diff --git a/src/Transports/StdioServerTransport.php b/src/Transports/StdioServerTransport.php index 011efe6..4535c17 100644 --- a/src/Transports/StdioServerTransport.php +++ b/src/Transports/StdioServerTransport.php @@ -148,12 +148,16 @@ public function listen(): void $this->close(); }); - $signalHandler = function (int $signal) { - $this->logger->info("Received signal {$signal}, shutting down."); - $this->close(); - }; - $this->loop->addSignal(SIGTERM, $signalHandler); - $this->loop->addSignal(SIGINT, $signalHandler); + try { + $signalHandler = function (int $signal) { + $this->logger->info("Received signal {$signal}, shutting down."); + $this->close(); + }; + $this->loop->addSignal(SIGTERM, $signalHandler); + $this->loop->addSignal(SIGINT, $signalHandler); + } catch (Throwable $e) { + $this->logger->debug('Signal handling not supported by current event loop.'); + } $this->logger->info('Server is up and listening on STDIN 🚀');