diff --git a/System/Cache/Base/Redis.php b/System/Cache/Base/Redis.php index 21cf6811..8088ceb2 100644 --- a/System/Cache/Base/Redis.php +++ b/System/Cache/Base/Redis.php @@ -6,10 +6,15 @@ use Http\Context\Context; use Kiri\Events\EventProvider; use Kiri\Exception\RedisConnectException; use Kiri\Kiri; +use Kiri\Pool\StopHeartbeatCheck; use Server\Events\OnWorkerExit; use Swoole\Timer; -class Redis + +/** + * + */ +class Redis implements StopHeartbeatCheck { const DB_ERROR_MESSAGE = 'The system is busy, please try again later.'; @@ -69,7 +74,6 @@ class Redis try { if (env('state') == 'exit') { echo 'timer end.' . PHP_EOL; - $this->stopHeartbeatCheck(); } if (time() - $this->_last > 10 * 60) { $this->stopHeartbeatCheck(); diff --git a/System/Pool/Pool.php b/System/Pool/Pool.php index 8bf82525..ad1caef2 100644 --- a/System/Pool/Pool.php +++ b/System/Pool/Pool.php @@ -53,8 +53,8 @@ class Pool extends Component } while ($channel->length() > $retain_number) { $connection = $channel->pop(); - if ($connection) { - unset($connection); + if ($connection instanceof StopHeartbeatCheck) { + $connection->stopHeartbeatCheck(); } } } diff --git a/System/Pool/StopHeartbeatCheck.php b/System/Pool/StopHeartbeatCheck.php new file mode 100644 index 00000000..44db0037 --- /dev/null +++ b/System/Pool/StopHeartbeatCheck.php @@ -0,0 +1,11 @@ +