请选择 进入手机版 | 继续访问电脑版
查看: 28|回复: 0

Discuz缓存扩展机制、自定义缓存的使用方法

[复制链接]

634

主题

636

帖子

3228

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
3228
发表于 6 天前 | 显示全部楼层 |阅读模式
Discuz缓存扩展机制、自定义缓存的使用方法

在Discuz程序中有缓存扩展机制,或者称自定义缓存机制,如果开发者要在开发插件或者是增加新的功能时能非常方便的给系统增加一个全新的缓存,而且在任何页面中都可以使用,具体的Discuz缓存扩展机制的使用方法如下。

下面以一个 名为 example 的缓存为例,详细说一下Discuz缓存扩展机制、自定义缓存的使用方法。

首先,来新建一个文件:
  1. <?php
  2. if(!defined('IN_DISCUZ')) {
  3.         exit('Access Denied');
  4. }

  5. function build_cache_example() {
  6.         $data = array();
  7.     $data[] = 'Hello World';
  8.     $data[] = 'Hello Discuz!';
  9.         save_syscache('example', $data);
  10. }
  11. ?>
复制代码

上面便是一个标准的缓存生成的文件。其中有几点重要的为:
  • 需要生成名字为 example 的缓存,那么这个文件的名字需要命名为:cache_example.php;
  • 文件中的 build_cache_xxxx 类似的这个函数名应为 build_cache_example;
  • save_syscache('xxxx', $data);  应该为  save_syscache('example', $data);
  • 为了安全性,文件头部必须增加如下代码:

  1. // 防止文件绕过Discuz主程序执行
  2. if(!defined('IN_DISCUZ')) {
  3.         exit('Access Denied');
  4. }
复制代码
其中 build_cache_example 函数就是主要的对需要缓存的数据做处理的函数,所有的组织数据,都能放到此函数里面执行,或者放到多个小函数,然后统一在此函数中执行。并且结尾必须要以  save_syscache('example', $data); 结尾,才能把数组写入到缓存中。

现在缓存文件有了,就可以把 cache_example.php 文件放到 source/function/cache 目录中。这样在的 Discuz! 文件中就可以读取这个缓存了。
更新缓存的方法:
  1. require_once libfile('function/cache');
  2. updatecache('example');
复制代码
读取缓存的方法:
  1. require_once libfile('function/cache');
  2. loadcache('example');
复制代码
执行后,缓存在:$_G['cache']['example']  变量中;

测试代码:
  1. require_once libfile('function/cache');
  2. updatecache('example');
  3. loadcache('example');
  4. print_r($_G['cache']['example']);exit;
复制代码
输出结果:
  1. Array ( [0] => Hello World [1] => Hello Discuz! )
复制代码

作为一个专业的Discuz插件开发者,在开发插件或者增加功能时,为了自己,也为他人网站的稳定性,给每个很大的查询结果增加上缓存。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|蓄财网 ( 豫ICP备2021002293号 )

GMT+8, 2021-10-19 20:53 , Processed in 0.104163 second(s), 32 queries .

蓄财网 ©版权所有

© 2021 蓄财网(www.aixc.cn)

快速回复 返回顶部 返回列表