discuz 缓存机制思路

DX的缓存机制,还是值得一看的,不要求看懂它每一个函数,但是要弄懂它的原理之后,嘿嘿,师夷长技以制夷嘛。(这里用这个词是不是不对……不管了,你懂的。)

在DX里面,经常会看到直接用updatecache()函数,类似updatecache('setting'),顾名思义就是更新setting缓存。但是他后面有一​大串的函数支持着,从内核开始就加载进来了,下面我们理一理。
PHP 代码:

Updatecache()

   
调用
    Getcachearray
()
   
从数据库SELECT相关表数据出来,取出来的数据存入函数内的$data数组,有些情况    会把数据存入$_G全局数组中。
   
        调用
        Save_syscache
()
        
把生成的$data数组存入common_syscache表中,并且判断系统是file缓存,还是    内存    缓存,清理相关缓存。




这里注意的是,updatecache()也会调用save_syscache()。我们需要的是弄清楚缓存原理,很简单:
如果改变了数据 -- 存库 -- 读库 -- 存入缓存 -- 删老缓存。
举例,后台我把 [PHP原创社区]的名字改了,程序上需要update新名字到数据库中,然后调用updatecache(),他会把刚更新到库中的文件读出,存到common_syscache
表,然后删除老缓存数据。前台直接读common_syscache中的新数据。具体怎么读,可以自己写函数,或者看
http://www.phpig.net/showthread.php?tid=118

posted @ 2014-02-20 15:09  念雷星  阅读(185)  评论(0编辑  收藏  举报