diff --git a/HttpServer/Events/OnManagerStart.php b/HttpServer/Events/OnManagerStart.php index f4a9acf0..04dd5273 100644 --- a/HttpServer/Events/OnManagerStart.php +++ b/HttpServer/Events/OnManagerStart.php @@ -44,29 +44,7 @@ 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 7843a4ec..6bb5c25a 100644 --- a/HttpServer/Events/OnWorkerStart.php +++ b/HttpServer/Events/OnWorkerStart.php @@ -22,6 +22,13 @@ 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 @@ -35,6 +42,8 @@ class OnWorkerStart extends Callback Coroutine::set(['enable_deadlock_check' => false]); Snowflake::app()->stateInit(); + $this->isPrint = false; + $this->debug(sprintf('System#%d start.', $worker_id)); if ($worker_id >= $server->setting['worker_num']) { $this->onTask($server, $worker_id); @@ -42,6 +51,7 @@ class OnWorkerStart extends Callback $this->onWorker($server, $worker_id); } + Coroutine\go([$this, 'onSignal'], $server, $worker_id); } @@ -82,6 +92,30 @@ 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