From 3ece870f0c396af18f3d1e7c5132edc4116a8b12 Mon Sep 17 00:00:00 2001 From: Joshua Ramon Enslin Date: Thu, 5 Oct 2023 16:45:35 +0200 Subject: [PATCH] Require externally set up redis connection for caching + serving full pages via redis --- src/MD_STD_CACHE.php | 35 +++++++++++++---------------------- 1 file changed, 13 insertions(+), 22 deletions(-) diff --git a/src/MD_STD_CACHE.php b/src/MD_STD_CACHE.php index e498252..f8c5c12 100644 --- a/src/MD_STD_CACHE.php +++ b/src/MD_STD_CACHE.php @@ -33,12 +33,13 @@ final class MD_STD_CACHE { /** * Shutdown function for caching contents of output buffer. * + * @param Redis $redis Redis connection. * @param string $redisKey Key to cache by in redis. * @param integer $expiry Expiration time in seconds. * * @return void */ - public static function shutdown_cache_through_redis(string $redisKey, int $expiry = 3600):void { + public static function shutdown_cache_through_redis(Redis $redis, string $redisKey, int $expiry = 3600):void { $outputT = trim(MD_STD::minimizeHTMLString(MD_STD::ob_get_clean())); echo $outputT; @@ -55,25 +56,19 @@ final class MD_STD_CACHE { * Caches and serves a page through redis. Should be called at the start * of the script generating a page. * - * @param string $redisKey Key to cache by in redis. - * @param integer $expiry Expiration time in seconds. - * @param Redis|null $redis Redis connection already opened, if one exists. - * If this parameter is not provided, a separate - * redis connection is opened for this function. + * @param string $redisKey Key to cache by in redis. + * @param integer $expiry Expiration time in seconds. + * @param Redis $redis Redis connection. * * @return string */ - public static function serve_page_through_redis_cache(string $redisKey, int $expiry = 3600, ?Redis $redis = null):string { + public static function serve_page_through_redis_cache(Redis $redis, string $redisKey, int $expiry = 3600):string { if (PHP_SAPI === 'cli') { return ''; } - if ($redis === null) { - $redis = self::open_redis_default(); - $closeRedis = true; - } - else $closeRedis = false; + $redis = self::open_redis_default(); if ($redis->ping() !== false) { @@ -86,26 +81,22 @@ final class MD_STD_CACHE { return $redisResult; } else { - register_shutdown_function(function(string $redisKey, int $expiry = 3600) :void { - self::shutdown_cache_through_redis($redisKey, $expiry); - }, $redisKey); + register_shutdown_function(function(Redis $redis, string $redisKey, int $expiry) :void { + self::shutdown_cache_through_redis($redis, $redisKey, $expiry); + }, $redis, $redisKey, $expiry); } } else { - register_shutdown_function(function(string $redisKey, int $expiry = 3600) :void { - self::shutdown_cache_through_redis($redisKey, $expiry); - }, $redisKey); + register_shutdown_function(function(Redis $redis, string $redisKey, int $expiry) :void { + self::shutdown_cache_through_redis($redis, $redisKey, $expiry); + }, $redis, $redisKey, $expiry); } } - if ($closeRedis === true) { - $redis->close(); - } - return ''; }