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

来源:互联网 发布:淘宝小号 担保交易 编辑:程序博客网 时间:2024/05/21 01:52

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

如何创建?

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



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


<?phpif(!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


<?phprequire_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);
当我们在数据库中新增或更新数据之后,可以调用该函数更新缓存表里的数据
原创粉丝点击