最终,终于确定这些“垃圾缓存”并不是来自于cache方法,也不是来自于S方法,而是来自于Thinkphp的数据库模型方法里面的setInc方法!
setInc方法的功能是让某个字段自增一定的值,默认是立即执行,但在我深入研究TP后,发现它可以设置延迟更新,以减轻数据库写入压力,于是就设置了1分钟延迟更新:
M(‘table_name’)->where($map)->setInc(‘field’,1,60);
以前我也怀疑它是如何做到延迟更新的,今天遇到这些“垃圾文件”终于知道它的原理了,原来就是靠缓存文件来记录将要更新的数据!
虽然,取消延迟更新就消除了这些垃圾缓存文件,但相应的问题又回来了:当大量用于访问这个页面的时候,数据库的写入压力就很大,而使用延迟更新,又会产生垃圾的“垃圾缓存文件”,对磁盘读写也是一种消耗,真不知道该如何选择了!在此,请教读者朋友帮忙指点指点吧!
原文地址:http://blog.51cto.com/qicaiji/2090074