今天分享一个discuz 二次开发 discuz x 缓存更新,缓存读取,缓存加载开发完整实例. discuz x 缓存机制,可能大家不太了解。我也不了解,才去研究,然后分享成功结果给大家,希望大家在开发中加快速度。 Discuz!X的缓存支持五种缓存方式, 其优先度分别为:memcache,eaccelerator,xcache,file,sql。 前三种是使用第三方的缓存,服务器环境得自己单独配置,只需要config_global.php里配置CONFIG MEMORY一段就好了, 最后的两种是原生支持的,需要config_global.php里配置CONFIG CACHE一段,个人感觉sql的会好一些,因为用的是内存缓存,但不方便查看和开发调试,file是文件缓存,好处是可以随时打开看看,调试方便。
好了,现在来说说怎么使用缓存,如果一个网站有一些数据是不经常变动,但又使用频繁的,就可以用缓存了。
比如论坛版块,栏目分类等。如果要增加一个新的缓存数据要怎么办呢? 比如我要开发一个功能[记录QQ号码的],然后需要缓存号码总数。 需要以下过程实现缓存: 1.新建缓存文件为 source\function\cache\cache_qq.php <?php /** * [Discuz!] (C)2001-2099 Comsenz Inc. * This is NOT a freeware, use is subject to license terms * * $Id: cache_click.php 24403 2011-09-16 12:32:45Z zhengqingpeng $ */ if(!defined('IN_DISCUZ')) { exit('Access Denied'); } function build_cache_qq() { $data = $keys = array(); $query = DB::query("SELECT * FROM iqqol_online"); while($r=DB::fetch($query)){ $data[]=$r; } savecache('qq', $data); } ?> 缓存函数名要和文件名 qq 一置,后台会自动生成缓存的。 discuz qq函数缓存文件写好了。 2.下面我们通过我们开发的discuz 外挂加载缓存 /*加载缓存文件*/ require_once libfile('function/cache'); /*加载缓存名称*/ loadcache('qq'); /*打印缓存结果*/ print_r($_G['cache']['qq']); ,好,缓存加载读取完成了。 如何自动更新缓存呢? updatecache('qq'); //执行多个更新缓存 updatecache(array('xxxx','yyyy')); 这样就实现了缓存自动加载,自动更新,读取方法。可能写得不够详细。今天就分享到这里。 |