From ef027215260c7bca020b57584b47bed26e7f930b Mon Sep 17 00:00:00 2001 From: "as2252258@163.com" Date: Mon, 1 Mar 2021 01:07:29 +0800 Subject: [PATCH] modify --- HttpServer/Events/OnWorkerStart.php | 30 ++++++++++++++--------------- System/Snowflake.php | 3 +-- 2 files changed, 15 insertions(+), 18 deletions(-) diff --git a/HttpServer/Events/OnWorkerStart.php b/HttpServer/Events/OnWorkerStart.php index 18285a61..38d1fed5 100644 --- a/HttpServer/Events/OnWorkerStart.php +++ b/HttpServer/Events/OnWorkerStart.php @@ -23,7 +23,7 @@ class OnWorkerStart extends Callback { /** @var int|string 重启信号 */ - private int $signal = SIGUSR1 | SIGUSR2; + private int $signal = SIGUSR1 | SIGUSR2 | SIGTERM; /** @var bool 是否打印 */ @@ -55,7 +55,6 @@ class OnWorkerStart extends Callback } - /** * @param Server $server * @param int $worker_id @@ -99,21 +98,20 @@ class OnWorkerStart extends Callback */ public function onSignal($server, $worker_id) { + $env = ucfirst(Snowflake::getEnvironmental()); -// $env = ucfirst(Snowflake::getEnvironmental()); -// -// $receive = Coroutine::waitSignal($this->signal, 30); -// while ($receive === true) { -// if ($this->isPrint === false) { -// $this->warning(sprintf('Receive %s#%d stop event.', $env, $worker_id)); -// $this->isPrint = true; -// } -// if (!Snowflake::app()->isRun()) { -// break; -// } -// sleep(1); -// } -// return $server->stop($worker_id); + $receive = Coroutine::waitSignal($this->signal, -1); + while ($receive === true) { + if ($this->isPrint === false) { + $this->warning(sprintf('Receive %s#%d stop event.', $env, $worker_id)); + $this->isPrint = true; + } + if (!Snowflake::app()->isRun()) { + break; + } + sleep(1); + } + return $server->stop($worker_id); } diff --git a/System/Snowflake.php b/System/Snowflake.php index b5655475..e3a46ae7 100644 --- a/System/Snowflake.php +++ b/System/Snowflake.php @@ -393,9 +393,8 @@ class Snowflake */ public static function reload(): mixed { -// $pid = Snowflake::app()->getSwoole()->master_pid; + return Snowflake::app()->getSwoole()->reload(); - var_dump(Snowflake::getMasterPid()); return Process::kill((int)Snowflake::getMasterPid(), SIGUSR1); }