diff --git a/HttpServer/Events/OnWorkerExit.php b/HttpServer/Events/OnWorkerExit.php index a8edb023..bc3a9ca9 100644 --- a/HttpServer/Events/OnWorkerExit.php +++ b/HttpServer/Events/OnWorkerExit.php @@ -25,6 +25,9 @@ class OnWorkerExit extends Callback { putenv('state=exit'); + $channel = Snowflake::app()->getChannel(); + $channel->cleanAll(); + $event = Snowflake::app()->getEvent(); $event->trigger(Event::SERVER_WORKER_EXIT); $event->offName(Event::SERVER_WORKER_EXIT); diff --git a/System/Channel.php b/System/Channel.php index 92f2dd0e..d7dec52b 100644 --- a/System/Channel.php +++ b/System/Channel.php @@ -68,6 +68,19 @@ class Channel extends Component } + /** + * + * 清空缓存 + */ + public function cleanAll() + { + /** @var CChannel $channel */ + foreach ($this->_channels as $channel) { + $channel->close(); + } + $this->_channels = []; + } + /** * @param $timeout * @param Closure $closure