thinkPHP的数据缓存问题

来源:互联网 发布:电脑网络受限制怎么办 编辑:程序博客网 时间:2024/05/29 03:18

昨天遇到的一个问题,即用两个浏览器登录不同的角色,然后请求同一个接口(根据角色不同给了不同的查询条件)进行数据查询,发现角色一查询数据之后,角色二去查数据时,拿到的是角色一查询过的数据。打印session没有串,查询条件也不一样,但问题是角色一查询的时候执行了查询语句,角色二查询的时候却没有执行查询语句。

一直很好奇角色二是如何没有通过执行查询语句而拿到数据,隐约觉得可能与缓存有关。于是把thinkPHP框架(3.12版)中有关于生成缓存的配置都关闭了,还是没有起到作用。(关于ThinkPHP关闭各种缓存的方法,大家可看看这个博客:http://blog.csdn.net/lovezbs/article/details/46492861)

最后让同事看的时候,惊奇的发现,不知哪位大神把查询的数据放在了S缓存里,第二次查询的时候就绕过了查询语句,直接从缓存数据里取的,这个坑埋的深呐!

最后的处理方式是,第一次查询的时候除了把数据放进S缓存里以外,还把用户信息也放进去,然后第二次查询的时候就比对一下当前用户与S缓存里的用户是否是同一个人,是的话就直接取缓存里的数据,不是的话就重新查询。