From ffdc2a5ebd8da981b3254b11bf39b82aa4892c58 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mr=C2=B7x?= Date: Fri, 23 Apr 2021 10:18:04 +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 --- Database/Pagination.php | 48 +++++++++++------------------------------ 1 file changed, 13 insertions(+), 35 deletions(-) diff --git a/Database/Pagination.php b/Database/Pagination.php index c18d3c16..69bb6fce 100644 --- a/Database/Pagination.php +++ b/Database/Pagination.php @@ -4,11 +4,10 @@ declare(strict_types=1); namespace Database; -use Snowflake\Abstracts\Component; use Closure; use Exception; +use Snowflake\Abstracts\Component; use Snowflake\Event; -use Snowflake\Snowflake; use Swoole\Coroutine; /** @@ -134,9 +133,7 @@ class Pagination extends Component */ public function plunk($param = []) { - $this->_group = new Coroutine\WaitGroup(); - Coroutine::create([$this, 'loop'], $param); - $this->_group->wait(); + $this->loop($param); } @@ -144,6 +141,7 @@ class Pagination extends Component * 轮训 * @param $param * @return array + * @throws Exception */ public function loop($param): array { @@ -152,7 +150,7 @@ class Pagination extends Component } [$length, $data] = $this->get(); - $this->runner($data, $param); + $this->executed($this->_callback, $data, $param); unset($data); if ($length < $this->_limit) { @@ -171,41 +169,21 @@ class Pagination extends Component } - /** - * @param $data - * @param $param - */ - private function runner($data, $param) - { - if (Snowflake::inCoroutine()) { - $this->executed($this->_callback, $data, $param); - } else { - call_user_func($this->_callback, $data, $param); - } - } - - /** * @param $callback * @param $data * @param $param - * 解释器 - * @return mixed + * @throws Exception */ - private function executed($callback, $data, $param): mixed + private function executed($callback, $data, $param): void { - $this->_group->add(1); - return Coroutine::create(function ($callback, $data, $param): void { - try { - call_user_func($callback, $data, $param); - } catch (\Throwable $exception) { - $this->addError($exception, 'throwable'); - } finally { - $event = Snowflake::app()->getEvent(); - $event->trigger(Event::SYSTEM_RESOURCE_RELEASES); - $this->_group->done(); - } - }, $callback, $data, $param); + try { + call_user_func($callback, $data, $param); + } catch (\Throwable $exception) { + $this->addError($exception, 'throwable'); + } finally { + fire(Event::SYSTEM_RESOURCE_RELEASES); + } }