<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN" "http://www.wapforum.org/DTD/wml_1.1.xml">
<wml>
<head><meta forua="true" http-equiv="Cache-Control" content="max-age=0" /></head>
<card title="CodeIgniter(CI)定时开启数据库缓存自动过期的处理的方法示例代码" id="card1">
<p> 游客</p><p>
标题:CodeIgniter(CI)定时开启数据库缓存自动过期的处理的方法示例代码<br/>
正文:<br/>
CodeIgniter(CI)自带数据库文件缓存，但按官方的说法，缓存设置后永不过期，除非你调用方法主动删除。<br/><br/>Cache files DO NOT expire. Any queries that have been cached will remain cached until you delete them.<br/><br/>感觉太弱智了，非常不方便。 修改一下db类，在开启缓存时设置一个过期时间，到期自动缓存自动失效。<br/><br/>1：CI database/DB_dirver.php 中 1021行 cache_on 函数替换为<br/><br/>代码如下:function cache_on($expire_time=0) //add parm expire time - 缓存过期时间<br/>{<br/>$this-&amp;gt;cache_expire_time = $expire_time; //add by kenvin<br/>$this-&amp;gt;cache_on = TRUE;<br/>return TRUE;<br/>}<br/>2：CI database/DB_cache.php 中 90行 read 函数 if (FALSE === ($cachedata = read_file($filepath))) 一行前面加上<br/><br/>代码如下://判断是否过期 // cache_expire_time<br/>if ( !file_exists($filepath) ) {<br/>return false;<br/>}<br/>if ( $this-&amp;gt;db-&amp;gt;cache_expire_time &amp;gt; 0 &amp;amp;&amp;amp; filemtime($filepath) db-&amp;gt;cache_expire_time) {<br/>return false;<br/>}<br/>这样，在需要开启缓存的地方，由以前的 $this→db→cache_on(); 改为代码如下:$this→db→cache_on($SEC); <br/>$SEC 为缓存过期时间，以秒为单位。 如 $this→db→cache_on(60);表示缓存60秒后过期。<br/><a href="http://camnpr.com/wap.asp?mode=WAP&amp;act=View&amp;id=1605&amp;Page=1">[&lt;&lt;]</a><a href="http://camnpr.com/wap.asp?mode=WAP&amp;act=View&amp;id=1605&amp;Page=1">[[1]]</a><a href="http://camnpr.com/wap.asp?mode=WAP&amp;act=View&amp;id=1605&amp;Page=1">[&gt;&gt;]</a><br/>
<br/>
<a href="wap.asp?act=Com&amp;id=1605">查看评论(0)</a><br/>
<a href="wap.asp?act=AddCom&amp;inpId=1605">发表评论</a><br/><br/>

<br/>

<br/>
<a href="http://camnpr.com/wap.asp">首页</a>
</p>
</card>
</wml>