用户
 找回密码
 入住 CI 中国社区
搜索
查看: 4184|回复: 8
收起左侧

[HELP] 缓存后如何往数据库里更新数据?

[复制链接]
发表于 2011-7-28 20:08:52 | 显示全部楼层 |阅读模式
本帖最后由 昨夜渡轮 于 2011-7-28 20:09 编辑

比如一个文章系统,阅读文章的页面在每次进入时都增加一次访问量,如果不缓存没问题,但是用了CI的静态缓存后不能更新数据内容了,这有什么办法吗?
比如这个例子:
PHP复制代码
 
class View extends Controller {
function View()
{
  parent::Controller();
  $this->db->set('count', 'count+1', FALSE);
  $this->db->insert('article', array('id'=>1) );
}
 
function read()
{
$this->output->cache(5);
相关PHP代码......
}
 
复制代码


这只是一个说明问题的示例,我在read()里开启了缓存,当有缓存文件的时候就不执行View()里的数据库操作了,如果不缓存的话就是正常的,怎么回事,有什么解决方法?
 楼主| 发表于 2011-7-28 20:37:42 | 显示全部楼层
传统的如果不框架,在读取缓存显示前是可以执行这种操作的可是这里有什么办法能达到那个要求
发表于 2011-7-28 21:00:53 | 显示全部楼层
ajax{:soso_e113:}
 楼主| 发表于 2011-7-28 21:03:38 | 显示全部楼层
longjianghu 发表于 2011-7-28 21:00
ajax

呵呵这样不好使,我想是不是开启缓存后CI禁止了执行数据库操作呢?
发表于 2011-7-28 21:06:32 | 显示全部楼层
昨夜渡轮 发表于 2011-7-28 21:03
呵呵这样不好使,我想是不是开启缓存后CI禁止了执行数据库操作呢?

你的意思如何你缓存了我用js还无法更新数据库了么?
 楼主| 发表于 2011-7-28 21:25:32 | 显示全部楼层
longjianghu 发表于 2011-7-28 21:06
你的意思如何你缓存了我用js还无法更新数据库了么?

我的意思是在输出缓存前,先执行更新数据访问量的代码
 楼主| 发表于 2011-7-28 22:54:49 | 显示全部楼层
明白原因了,原来有缓存的话都不加载lib库文件了,不知道有没有什么好的解决办法
发表于 2011-7-29 18:01:40 | 显示全部楼层
昨夜渡轮 发表于 2011-7-28 21:25
我的意思是在输出缓存前,先执行更新数据访问量的代码

先更新或者打开之后更新有什么区别?
发表于 2011-7-29 18:14:51 | 显示全部楼层
缓存在控制器加载前就输出结束了,没有contorller,没有load,没有model,没有db,没有library

本版积分规则