diff --git a/System/Abstracts/Pool.php b/System/Abstracts/Pool.php index f992ceb2..0be40721 100644 --- a/System/Abstracts/Pool.php +++ b/System/Abstracts/Pool.php @@ -10,6 +10,7 @@ use HttpServer\Http\Context; use JetBrains\PhpStorm\Pure; use PDO; use Redis; +use Snowflake\Pool\Timeout; use Swoole\Coroutine; use Swoole\Coroutine\Channel; use Swoole\Timer; @@ -26,6 +27,8 @@ abstract class Pool extends Component protected int $max = 60; + use Timeout; + /** * @param $name * @param false $isMaster @@ -127,6 +130,10 @@ abstract class Pool extends Component return; } + if ($this->creates === 0) { + $this->creates = Timer::tick(1000, [$this, 'Heartbeat_detection']); + } + Context::setContext('create:connect:' . $coroutineName, 1); $this->push($coroutineName, call_user_func($createHandler, ...$config)); diff --git a/System/Cache/Redis.php b/System/Cache/Redis.php index 57728c6d..36b9c1d3 100644 --- a/System/Cache/Redis.php +++ b/System/Cache/Redis.php @@ -125,6 +125,7 @@ SCRIPT; * 销毁连接池 * @throws ConfigException * @throws ComponentException + * @throws Exception */ public function destroy() { diff --git a/System/Pool/Connection.php b/System/Pool/Connection.php index bacb88f4..a65d77af 100644 --- a/System/Pool/Connection.php +++ b/System/Pool/Connection.php @@ -18,7 +18,6 @@ use Swoole\Timer; class Connection extends Pool { - use Timeout; public array $hasCreate = []; @@ -179,9 +178,6 @@ class Connection extends Pool if ($number = Context::getContext('begin_' . $coroutineName, Coroutine::getCid())) { $number > 0 && $link->beginTransaction(); } - if ($this->creates === 0) { - $this->creates = Timer::tick(1000, [$this, 'Heartbeat_detection']); - } return $link; }); } diff --git a/System/Pool/Redis.php b/System/Pool/Redis.php index 911a4bbb..ab6bd424 100644 --- a/System/Pool/Redis.php +++ b/System/Pool/Redis.php @@ -20,7 +20,6 @@ use Swoole\Timer; class Redis extends Pool { - use Timeout; private int $_create = 0; diff --git a/System/Pool/Timeout.php b/System/Pool/Timeout.php index e2934acd..78b3df8d 100644 --- a/System/Pool/Timeout.php +++ b/System/Pool/Timeout.php @@ -10,7 +10,7 @@ use Swoole\Timer; trait Timeout { - private int $creates = 0; + private int $creates = -1; private int $lastTime = 0;