*/ declare(strict_types = 1); /** * Provides caching functions. */ final class MD_STD_CACHE { /** @var string */ public static string $redis_host = '127.0.0.1'; /** @var integer */ public static int $redis_port = 6379; /** * 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. * * @return string */ public static function serve_page_through_redis_cache(string $redisKey, int $expiry = 3600):string { $redis = new Redis(); $redis->connect(self::$redis_host, self::$redis_port, 1, NULL, 0, 0, ['auth' => [MD_CONF::$redis_pw]]); if ($redis->ping() !== false) { ob_start(); if (($redisResult = $redis->get($redisKey))) { $redis->close(); return $redisResult; } else { register_shutdown_function(function(string $redisKey, int $expiry = 3600) :void { $outputT = MD_STD::minimizeHTMLString(MD_STD::ob_get_clean()); echo $outputT; $redis = new Redis(); $redis->connect(self::$redis_host, self::$redis_port, 1, NULL, 0, 0, ['auth' => [MD_CONF::$redis_pw]]); $redis->set($redisKey, $outputT); $redis->expire($redisKey, $expiry); $redis->close(); }, $redisKey); } $redis->close(); } $redis->close(); return ''; } }