# 信号处理器 信号处理器会监听 `Worker` 进程和 `自定义` 进程启动后,自动注册到信号管理器中。 ## 安装 ``` composer require hyperf/signal ``` ## 发布配置 您可以通过下面的命令来发布默认的配置文件到您的项目中: ```bash php bin/hyperf.php vendor:publish hyperf/signal ``` ## 添加处理器 以下我们监听 `Worker` 进程的 `SIGTERM` 信号,当收到信号后,打印出信号值。 ```php WorkerStopHandler 不适配于 CoroutineServer,如有需要请自行实现 ```php [ Hyperf\Signal\Handler\WorkerStopHandler::class => PHP_INT_MIN ], 'timeout' => 5.0, ]; ``` `WorkerStopHandler` 触发后,会在所设置的 [max_wait_time](https://wiki.swoole.com/#/server/setting?id=max_wait_time) 配置时间后,关闭掉当前进程。 ## 协程风格服务监听器配置示例 > 以上默认的监听器都是适配于异步风格服务的,如果需要在协程风格服务下使用,可以按照以下自定义配置 ```php container = $container; $this->config = $container->get(ConfigInterface::class); } public function listen(): array { // 协程风格只会存在一个 Worker 进程,故这里只需要监听 WORKER 即可 return [ [self::WORKER, SIGTERM], [self::WORKER, SIGINT], ]; } public function handle(int $signal): void { ProcessManager::setRunning(false); foreach (ServerManager::list() as [$type, $server]) { // 循环关闭开启的服务 $server->shutdown(); } } } ```