php代码
class redisCache { /** * $host : redis服务器ip * $port : redis服务器端口 * $lifetime : 缓存文件有效期,单位为秒 * $cacheid : 缓存文件路径,包含文件名 */ private $host; private $port; private $lifetime; private $cacheid; private $data; public $redis; /** * 析构函数,检查缓存目录是否有效,默认赋值 */ function __construct($lifetime=1800) { //配置 $this->host = "127.0.0.1"; $this->port = "6379"; $redis = new Redis(); $redis->pconnect($this->host,$this->port); $this->redis=$redis; $this->cacheid = $this->getcacheid(); $this->lifetime = $lifetime; $this->data=$redis->hMGet($this->cacheid, array('content','creattime')); //print_r($this->redis); //print_r($this->data); } /** * 检查缓存是否有效 */ private function isvalid(){ $data=$this->data; if (!$data['content']) return false; if (time() - $data['creattime'] > $this->lifetime) return false; return true; } /** * 写入缓存 * $mode == 0 , 以浏览器缓存的方式取得页面内容 */ public function write($mode=0,$content='') { switch ($mode) { case 0: $content = ob_get_contents(); break; default: break; } ob_end_flush(); try { $this->redis->hMset($this->cacheid, array('content'=>$content,'creattime'=>time())); } catch (Exception $e) { $this->error('写入缓存失败!'); } } /** * 加载缓存 * exit() 载入缓存后终止原页面程序的执行,缓存无效则运行原页面程序生成缓存 * ob_start() 开启浏览器缓存用于在页面结尾处取得页面内容 */ public function load() { if ($this->isvalid()) { echo $this->data['content']; exit(); } else { ob_start(); } } /** * 清除缓存 */ public function clean() { try { $this->redis->hDel($this->cacheid, array('content','creattime')); } catch (Exception $e) { $this->error('清除缓存失败!'); } } /** * 取得缓存文件路径 */ private function getcacheid() { return $this->dir.md5($this->geturl()).$this->ext; } /** * 取得当前页面完整url */ private function geturl() { $url = ''; if (isset($_SERVER['REQUEST_URI'])) { $url = $_SERVER['REQUEST_URI']; } else { $url = $_SERVER['Php_SELF']; $url .= empty($_SERVER['QUERY_STRING'])?'':'?'.$_SERVER['QUERY_STRING']; } return $url; } /** * 输出错误信息 */ private function error($str) { echo '<div style="color:red;">'.$str.'</div>'; } } //用法: // require_once('redisCache.php'); // $cache = new redisCache(10); //设置缓存生存期 // if ($_GET['clearCache']) $cache->clean(); // else $cache->load(); //装载缓存,缓存有效则不执行以下页面代码 // //页面代码开始 // //页面代码结束 // $cache->write(); //首次运行或缓存过期,生成缓存
修复redis缓存生存时间
class redisCache { /** * $host : redis服务器ip * $port : redis服务器端口 * $lifetime : 缓存文件有效期,单位为秒 * $cacheid : 缓存文件路径,包含文件名 */ private $host; private $port; private $lifetime; private $cacheid; private $data; public $redis; /** * 析构函数,检查缓存目录是否有效,默认赋值 */ function __construct($lifetime=1800) { //配置 $this->host = "127.0.0.1"; $this->port = "6379"; $redis = new Redis(); $redis->pconnect($this->host,$this->port); $this->redis=$redis; $this->cacheid = $this->getcacheid(); $this->lifetime = $lifetime; $this->data=$redis->hMGet($this->cacheid, array('content','creattime')); //print_r($this->redis); //print_r($this->data); } /** * 检查缓存是否有效 */ private function isvalid(){ $data=$this->data; if (!$data['content']) return false; if (time() - $data['creattime'] > $this->lifetime) return false; return true; } /** * 写入缓存 * $mode == 0 , 以浏览器缓存的方式取得页面内容 */ public function write($mode=0,$content='') { switch ($mode) { case 0: $content = ob_get_contents(); break; default: break; } ob_end_flush(); try { $this->redis->hMset($this->cacheid, array('content'=>$content,'creattime'=>time())); $this->redis->expireAt($this->cacheid, time() + $this->lifetime); } catch (Exception $e) { $this->error('写入缓存失败!'); } } /** * 加载缓存 * exit() 载入缓存后终止原页面程序的执行,缓存无效则运行原页面程序生成缓存 * ob_start() 开启浏览器缓存用于在页面结尾处取得页面内容 */ public function load() { if ($this->isvalid()) { echo $this->data['content']; exit(); } else { ob_start(); } } /** * 清除缓存 */ public function clean() { try { $this->redis->hDel($this->cacheid, array('content','creattime')); } catch (Exception $e) { $this->error('清除缓存失败!'); } } /** * 取得缓存文件路径 */ private function getcacheid() { return $this->dir.md5($this->geturl()).$this->ext; } /** * 取得当前页面完整url */ private function geturl() { $url = ''; if (isset($_SERVER['REQUEST_URI'])) { $url = $_SERVER['REQUEST_URI']; } else { $url = $_SERVER['Php_SELF']; $url .= empty($_SERVER['QUERY_STRING'])?'':'?'.$_SERVER['QUERY_STRING']; } return $url; } /** * 输出错误信息 */ private function error($str) { echo '<div style="color:red;">'.$str.'</div>'; } } //用法: // require_once('redisCache.php'); // $cache = new redisCache(10); //设置缓存生存期 // if ($_GET['clearCache']) $cache->clean(); // else $cache->load(); //装载缓存,缓存有效则不执行以下页面代码 // //页面代码开始 // //页面代码结束 // $cache->write(); //首次运行或缓存过期,生成缓存 ?>
声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

AI Hentai Generator
免费生成ai无尽的。

热门文章
R.E.P.O.能量晶体解释及其做什么(黄色晶体)
3 周前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳图形设置
3 周前By尊渡假赌尊渡假赌尊渡假赌
刺客信条阴影:贝壳谜语解决方案
2 周前ByDDD
R.E.P.O.如果您听不到任何人,如何修复音频
3 周前By尊渡假赌尊渡假赌尊渡假赌
WWE 2K25:如何解锁Myrise中的所有内容
3 周前By尊渡假赌尊渡假赌尊渡假赌

热工具

Atom编辑器mac版下载
最流行的的开源编辑器

mPDF
mPDF是一个PHP库,可以从UTF-8编码的HTML生成PDF文件。原作者Ian Back编写mPDF以从他的网站上“即时”输出PDF文件,并处理不同的语言。与原始脚本如HTML2FPDF相比,它的速度较慢,并且在使用Unicode字体时生成的文件较大,但支持CSS样式等,并进行了大量增强。支持几乎所有语言,包括RTL(阿拉伯语和希伯来语)和CJK(中日韩)。支持嵌套的块级元素(如P、DIV),

螳螂BT
Mantis是一个易于部署的基于Web的缺陷跟踪工具,用于帮助产品缺陷跟踪。它需要PHP、MySQL和一个Web服务器。请查看我们的演示和托管服务。

Dreamweaver Mac版
视觉化网页开发工具

记事本++7.3.1
好用且免费的代码编辑器