缓存__Discuz x2.0在初始化时添加自己的缓存

转载请注明出处,谢谢:http://write.blog.csdn.net/postedit/8199827

如何创建?

假设discuz数据库中已经有下面这个数据表:pre_xxjob_cardcategory,保存的是充值卡信息



我们切换到discuz目录source/function/cache/下创建cache_plugincard.php,代码如下:


<?php

if(!defined('IN_DISCUZ')){
    exit("Access Denied");
}
function build_cache_plugincard(){
    $data=array();
    $query=DB::query("SELECT name FROM ".DB::table('xxjob_cardcategory')); //从数据库检索数据
    while($row=DB::fetch($query)){
        $data[]=$row['name'];  //将数据存放到数据中
    }
    save_syscache('plugincard',$data);   //通过save_syscache()将数组保存到pre_common_syscache表中
}

?>

保存后我们到管理后台更新一下缓存,然后查看pre_common_syscache表中会多出一条数据,表明已经创建成功




如何使用?

我们在discuz根目录下创建一个单页test.php


<?php

require_once './source/class/class_core.php';
require_once './source/function/function_home.php';
$discuz = & discuz_core::instance();
$discuz->cachelist=array("plugincard");//加载指定缓存,内部会自动调用loadcache();
$discuz->init();
print_r($_G['cache']['plugincard']) ;

?>

运行显示结果是:


当然我们也可以自己手动加载缓存

loadcache('plugincard');
print_r($_G['cache']['plugincard'];

如何自己创建缓存?不依靠$discuz->init()初始化.

如果不想让系统自动初始化缓存,则可以自己单独用save_syscache()和loadcache();


下面是伪代码:

//从数据库获取数据
$query=DB::query('xxxxxx');
//数据存放到数组里
$arr=array();
while(DB::fetch($query){
      $arr=.....;
}
//保存到数据表中
save_syscache('plugincard',$arr);

.......
.......

//使用时这样
loadcache('plugincard');
//然后就可以在$_G全局变量使用
print_r($_G['cache']['plugincard']);


如何更新缓存?

在管理后台点"更新缓存"会更新全部系统缓存,当然我们也可以自己更新,使用 updatecache($name);
当我们在数据库中新增或更新数据之后,可以调用该函数更新缓存表里的数据
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值