From 6ab056d8a8be73a6e62c60d9d097880ec8b188d6 Mon Sep 17 00:00:00 2001 From: xiaomlove <1939737565@qq.com> Date: Tue, 14 Oct 2025 22:27:14 +0700 Subject: [PATCH] redis use pconnect when php runs in fpm mode --- classes/class_cache_redis.php | 20 +++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) diff --git a/classes/class_cache_redis.php b/classes/class_cache_redis.php index bd8d580b..7bdad02e 100644 --- a/classes/class_cache_redis.php +++ b/classes/class_cache_redis.php @@ -40,7 +40,20 @@ class class_cache_redis { if (isset($config['timeout']) && is_numeric($config['timeout'])) { $params[] = $config['timeout']; } - $connectResult = $redis->connect(...$params); + if ($this->isFpmMode()) { + try { + $connectResult = $redis->pconnect(...$params); + } catch (\Exception $e) { + do_log("redis pconnect failed: {$e->getMessage()}, retry one time", 'error'); + $redis->close(); + $redis = new Redis(); + $connectResult = $redis->pconnect(...$params); + } + do_log("redis pconnect: $connectResult", 'debug'); + } else { + $connectResult = $redis->connect(...$params); + do_log("redis connect: $connectResult", 'debug'); + } if (!empty($config['password'])) { $connectResult = $connectResult && $redis->auth($config['password']); } @@ -55,6 +68,11 @@ class class_cache_redis { return true; } + private function isFpmMode(): bool + { + return php_sapi_name() === 'fpm-fcgi'; + } + function getIsEnabled() { return $this->isEnabled; }