让CodeIgniter数据库缓存自动过期的处理的方法


Posted in PHP onJune 12, 2014

CodeIgniter框架是一个非常小巧的PHP框架。CI自带数据库文件缓存,但按官方的说法,缓存设置后永不过期,除非你调用方法主动删除。

Cache files DO NOT expire. Any queries that have been cached will remain cached until you delete them.

感觉太弱智了,非常不方便。 修改一下db类,在开启缓存时设置一个过期时间,到期自动缓存自动失效。

1:CI database/DB_dirver.php 中 1021行 cache_on 函数替换为

function cache_on($expire_time=0) //add parm expire time - 缓存过期时间
{
$this->cache_expire_time = $expire_time; //add by kenvin
$this->cache_on = TRUE;
return TRUE;
}

2:CI database/DB_cache.php 中 90行 read 函数 if (FALSE === ($cachedata = read_file($filepath))) 一行前面加上

//判断是否过期 // cache_expire_time
if ( !file_exists($filepath) ) {
return false;
}
if ( $this->db->cache_expire_time > 0 && filemtime($filepath) db->cache_expire_time) {
return false;
}

这样,在需要开启缓存的地方,由以前的 $this→db→cache_on(); 改为

$this→db→cache_on($SEC);

$SEC 为缓存过期时间,以秒为单位。 如 $this→db→cache_on(60);表示缓存60秒后过期。
PHP 相关文章推荐
PHP 得到根目录的 __FILE__ 常量
Jul 23 PHP
关于PHP实现异步操作的研究
Feb 03 PHP
PHP把JPEG图片转换成Progressive JPEG的方法
Jun 30 PHP
php从字符串创建函数的方法
Mar 16 PHP
PHP将页面中点击数量高的链接进行高亮显示的方法
May 30 PHP
PHP实现将MySQL重复ID二维数组重组为三维数组的方法
Aug 01 PHP
php实现有序数组打印或排序的方法【附Python、C及Go语言实现代码】
Nov 10 PHP
PHP数字前补0的自带函数sprintf 和number_format的用法(详解)
Feb 06 PHP
删除PHP数组中的重复元素的实现代码
Apr 10 PHP
PHP从零开始打造自己的MVC框架之类的自动加载实现方法详解
Jun 03 PHP
php引用和拷贝的区别知识点总结
Sep 23 PHP
Yii 框架使用数据库(databases)的方法示例
May 19 PHP
PHP 面向对象程序设计(oop)学习笔记(三) - 单例模式和工厂模式
Jun 12 #PHP
CodeIgniter启用缓存和清除缓存的方法
Jun 12 #PHP
PHP 面向对象程序设计(oop)学习笔记 (二) - 静态变量的属性和方法及延迟绑定
Jun 12 #PHP
PHP 面向对象程序设计(oop)学习笔记(一) - 抽象类、对象接口、instanceof 和契约式编程
Jun 12 #PHP
对PHP语言认识上需要避免的10大误区
Jun 12 #PHP
PHP数据库万能引擎类adodb配置使用以及实例集锦
Jun 12 #PHP
PHP微框架Dispatch简介
Jun 12 #PHP
You might like
编写PHP脚本清除WordPress头部冗余代码的方法讲解
2016/03/01 PHP
ImageFlow可鼠标控制图片滚动
2008/01/30 Javascript
用函数式编程技术编写优美的 JavaScript_ibm
2008/05/16 Javascript
比较全面的event对像在IE与FF中的区别 推荐
2009/09/21 Javascript
JQuery操作textarea,input,select,checkbox方法
2015/09/02 Javascript
JS中取二维数组中最大值的方法汇总
2016/04/17 Javascript
AngularJs Scope详解及示例代码
2016/09/01 Javascript
最常见的左侧分类菜单栏jQuery实现代码
2016/11/28 Javascript
JS字符串统计操作示例【遍历,截取,输出,计算】
2017/03/27 Javascript
JavaScript之Date_动力节点Java学院整理
2017/06/28 Javascript
详解使用React进行组件库开发
2018/02/06 Javascript
JavaScript中call和apply方法的区别实例分析
2018/08/03 Javascript
Javascript中parseInt的正确使用方式
2018/10/17 Javascript
VUE实现密码验证与提示功能
2019/10/18 Javascript
vue.js 子组件无法获取父组件store值的解决方式
2019/11/08 Javascript
vue-video-player视频播放器使用配置详解
2020/10/23 Javascript
微信小程序实现可拖动悬浮图标(包括按钮角标的实现)
2020/12/29 Javascript
vue实现拖拽进度条
2021/03/01 Vue.js
python实现从字典中删除元素的方法
2015/05/04 Python
详谈python3中用for循环删除列表中元素的坑
2018/04/19 Python
pymongo中聚合查询的使用方法
2019/03/22 Python
如何用Python破解wifi密码过程详解
2019/07/12 Python
python报错: 'list' object has no attribute 'shape'的解决
2020/07/15 Python
Python 排序最长英文单词链(列表中前一个单词末字母是下一个单词的首字母)
2020/12/14 Python
canvas学习笔记之2d画布基础的实现
2019/02/21 HTML / CSS
Theflamel意大利:女士奢华服装、鞋子和配件
2020/01/11 全球购物
说出数据连接池的工作机制是什么?
2013/04/19 面试题
什么是SCM(软件配置管理)
2014/08/16 面试题
《争吵》教学反思
2014/02/15 职场文书
平安工地建设方案
2014/05/06 职场文书
单位法定代表人授权委托书
2014/09/20 职场文书
SqlServer 垂直分表(减少程序改动)
2021/04/16 SQL Server
Python初识逻辑与if语句及用法大全
2021/08/07 Python
使用redis实现延迟通知功能(Redis过期键通知)
2021/09/04 Redis
Mysql中有关Datetime和Timestamp的使用总结
2021/12/06 MySQL
基于Python实现射击小游戏的制作
2022/04/06 Python