diff --git a/HttpServer/Events/OnManagerStart.php b/HttpServer/Events/OnManagerStart.php index b695f246..f4a9acf0 100644 --- a/HttpServer/Events/OnManagerStart.php +++ b/HttpServer/Events/OnManagerStart.php @@ -13,9 +13,22 @@ use Swoole\Coroutine; use Swoole\Process; use Swoole\Server; + +/** + * Class OnManagerStart + * @package HttpServer\Events + */ class OnManagerStart extends Callback { + + /** @var int|string 重启信号 */ + private int $signal = SIGUSR1 | SIGUSR2; + + /** @var bool 是否打印 */ + private bool $isPrint = false; + + /** * @param Server $server * @throws Exception @@ -31,6 +44,29 @@ class OnManagerStart extends Callback return; } name(Config::get('id', false, 'system') . ' Server Manager.'); + + Coroutine\go([$this, 'onSignal'], $server); + } + + + /** + * @param $server + * @param $worker_id + */ + public function onSignal($server) + { + $receive = Coroutine::waitSignal($this->signal, 30); + while ($receive === true) { + if ($this->isPrint === false) { + $this->warning(sprintf('Receive Worker stop event.')); + $this->isPrint = true; + } + if (!Snowflake::app()->isRun()) { + break; + } + sleep(1); + } + return $server->stop(); } } diff --git a/HttpServer/Events/OnWorkerStart.php b/HttpServer/Events/OnWorkerStart.php index 6bb5c25a..6d33d6c5 100644 --- a/HttpServer/Events/OnWorkerStart.php +++ b/HttpServer/Events/OnWorkerStart.php @@ -22,13 +22,6 @@ use Swoole\Server; class OnWorkerStart extends Callback { - /** @var int|string 重启信号 */ - private int $signal = SIGUSR1 | SIGUSR2; - - - /** @var bool 是否打印 */ - private bool $isPrint = false; - /** * @param Server $server * @param int $worker_id @@ -51,7 +44,6 @@ class OnWorkerStart extends Callback $this->onWorker($server, $worker_id); } - Coroutine\go([$this, 'onSignal'], $server, $worker_id); } @@ -92,30 +84,6 @@ class OnWorkerStart extends Callback } - /** - * @param $server - * @param $worker_id - */ - public function onSignal($server, $worker_id) - { - -// $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); - } - - /** * @param $socket * @param $worker_id