discuz教程:缓存更新,缓存读取,缓存加载开发完整实例 [复制链接]

moqu8 2018-1-9

4 0

今天分享一个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')); 

这样就实现了缓存自动加载,自动更新,读取方法。可能写得不够详细。今天就分享到这里。


最新回复 (0)
返回
支持中心
邮箱:winkill2012@qqcom
新站优化中!部分功能尚未完善,敬请谅解!
支持中心