mirror of
https://gitee.com/hyperf/hyperf.git
synced 2024-12-02 19:58:22 +08:00
1.1 KiB
1.1 KiB
信號處理器
信號處理器會監聽 Worker
進程和 自定義
進程啟動後,自動註冊到信號管理器中。
安裝
composer require hyperf/signal
添加處理器
以下我們監聽 Worker
進程的 SIGTERM
信號,當收到信號後,打印出信號值。
<?php
declare(strict_types=1);
namespace App\Signal;
use Hyperf\Signal\Annotation\Signal;
use Hyperf\Signal\SignalHandlerInterface;
/**
* @Signal
*/
class TermSignalHandler implements SignalHandlerInterface
{
public function listen(): array
{
return [
[SignalHandlerInterface::WORKER, SIGTERM],
];
}
public function handle(int $signal): void
{
var_dump($signal);
}
}
因為 Worker 進程 SIGTERM 信號被捕獲後,無法正常退出,所以用户可以直接 Ctrl+C 退出,或者修改 signal.php 配置
<?php
declare(strict_types=1);
return [
'handlers' => [
Hyperf\Signal\Handler\WorkerStopHandler::class => PHP_INT_MIN
],
'timeout' => 5.0,
];
WorkerStopHandler
觸發後,會在 max_wait_time
時間後,關掉當前進程。