diff --git a/Server/Manager/ServerDefaultEvent.php b/Server/Manager/ServerDefaultEvent.php index 83ffed05..a87f5b47 100644 --- a/Server/Manager/ServerDefaultEvent.php +++ b/Server/Manager/ServerDefaultEvent.php @@ -2,9 +2,11 @@ namespace Server\Manager; +use Exception; use Server\Abstracts\Server; use Server\Constant; use Server\SInterface\PipeMessage; +use Snowflake\Event; /** @@ -37,6 +39,7 @@ class ServerDefaultEvent extends Server * @param \Swoole\Server $server * @param int $src_worker_id * @param mixed $message + * @throws Exception */ public function onPipeMessage(\Swoole\Server $server, int $src_worker_id, mixed $message) { @@ -46,7 +49,14 @@ class ServerDefaultEvent extends Server if (!is_object($message) || !($message instanceof PipeMessage)) { return; } - $this->runEvent(Constant::PIPE_MESSAGE, null, [$server, $src_worker_id, $message]); + defer(fn() => fire(Event::SYSTEM_RESOURCE_RELEASES)); + $this->runEvent(Constant::PIPE_MESSAGE, + function (\Swoole\Server $server, $src_worker_id, $message) { + call_user_func([$message, 'process']); + }, [ + $server, $src_worker_id, $message + ] + ); } diff --git a/Server/SInterface/PipeMessage.php b/Server/SInterface/PipeMessage.php index 06a01840..c47b49ae 100644 --- a/Server/SInterface/PipeMessage.php +++ b/Server/SInterface/PipeMessage.php @@ -4,6 +4,10 @@ namespace Server\SInterface; +/** + * Interface PipeMessage + * @package Server\SInterface + */ interface PipeMessage {