From 6e6c9af8870e7776a6969b2b04f3b527e74c57a1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mr=C2=B7x?= Date: Fri, 18 Sep 2020 21:09:36 +0800 Subject: [PATCH] =?UTF-8?q?=E6=94=B9=E5=90=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- HttpServer/Server.php | 50 ++++++++++++++++++++++++------------------- System/Event.php | 3 +++ 2 files changed, 31 insertions(+), 22 deletions(-) diff --git a/HttpServer/Server.php b/HttpServer/Server.php index 55b0b296..0ca8bf0f 100644 --- a/HttpServer/Server.php +++ b/HttpServer/Server.php @@ -287,21 +287,7 @@ class Server extends Application private function dispatchCreate($config, $settings) { if (!($this->baseServer instanceof \Swoole\Server)) { - $class = $this->dispatch($config['type']); - if ($this->isUse($config['port'])) { - return $this->error_stop($config['host'], $config['port']); - } - $this->baseServer = new $class($config['host'], $config['port'], SWOOLE_PROCESS, $config['mode']); - $settings['daemonize'] = $this->daemon; - if (!isset($settings['pid_file'])) { - $settings['pid_file'] = APP_PATH . 'storage/server.pid'; - } - if ($this->baseServer instanceof Websocket) { - $this->onLoadWebsocketHandler(); - } else if ($this->baseServer instanceof Http) { - $this->onLoadHttpHandler(); - } - $this->baseServer->set($settings); + $this->parseServer($config, $settings); } else { $newListener = $this->baseServer->addlistener($config['host'], $config['port'], $config['mode']); if (isset($config['settings']) && is_array($config['settings'])) { @@ -313,6 +299,32 @@ class Server extends Application } + /** + * @param $config + * @param $settings + * @throws Exception + * @return void + */ + private function parseServer($config, $settings) + { + $class = $this->dispatch($config['type']); + if ($this->isUse($config['port'])) { + return $this->error_stop($config['host'], $config['port']); + } + $this->baseServer = new $class($config['host'], $config['port'], SWOOLE_PROCESS, $config['mode']); + $settings['daemonize'] = $this->daemon; + if (!isset($settings['pid_file'])) { + $settings['pid_file'] = APP_PATH . 'storage/server.pid'; + } + if ($this->baseServer instanceof Websocket) { + $this->onLoadWebsocketHandler(); + } else if ($this->baseServer instanceof Http) { + $this->onLoadHttpHandler(); + } + $this->baseServer->set($settings); + } + + /** * @param $config * @param $newListener @@ -369,9 +381,6 @@ class Server extends Application { $event = Snowflake::app()->getEvent(); $router = Snowflake::app()->getRouter(); - if ($event->exists(Event::SERVER_WORKER_START, [$router, 'loadRouterSetting'])) { - return; - } $event->on(Event::SERVER_WORKER_START, [$router, 'loadRouterSetting']); } @@ -386,10 +395,7 @@ class Server extends Application $websocket->namespace = 'App\\Websocket'; $websocket->path = APP_PATH . 'app/Websocket'; - $event = Snowflake::app()->event; - if ($event->exists(Event::SERVER_WORKER_START, [$websocket, 'registration_notes'])) { - return; - } + $event = Snowflake::app()->getEvent(); $event->on(Event::SERVER_WORKER_START, [$websocket, 'registration_notes']); } diff --git a/System/Event.php b/System/Event.php index a5f21df9..d9e7d5d2 100644 --- a/System/Event.php +++ b/System/Event.php @@ -70,6 +70,9 @@ class Event extends BaseObject } $callback[0] = Snowflake::createObject($callback[0]); } + if ($this->exists($name, $callback)) { + return; + } if (!empty($this->_events[$name]) && $isAppend === true) { array_unshift($this->_events[$name], [$callback, $parameter]); } else {