缓存__Discuz!X 中会自动初始化的一些系统缓存

来源:互联网 发布:关于淘宝的书籍 编辑:程序博客网 时间:2024/05/20 16:37

转自:http://blog.ihipop.info/2012/02/2990.html,如需转载请注明出处

"\ultrax\source\class\class_core.php" 约536行

usergroup_【当前用户的groupid】
admingroup_【当前用户的adminid】
setting
style_default
cronnextrun
usergroup_【newusergroupid】
style_【主题ID】

此外,如果你进入一些特定页面,还会调用更深层次的一些缓存。比如编辑器表情标签初始化的时候会载入similes缓存,使用plugin.php调用插件的时候会自动载入plugin缓存等等,如果需要在别处调用某一处缓存,比如plugin,similes,可以直接传给loadcache($cachenames, $force = false)一个缓存名称后就可以获取到缓存数据。当然传入一个数组也是可以的。
以下是缓存的工作原理 via: discuz dev wiki



如何注册系统缓存呢?可以使用dX基带的缓存扩展机制。
很简单 在\source\function\cache增加一个文件,比如以dz 自己带到smiles为例。

<?php/** *      [Discuz!] (C)2001-2099 Comsenz Inc. *      This is NOT a freeware, use is subject to license terms * *      $Id: cache_smilies.php 22550 2011-05-12 05:21:39Z monkey $ */if(!defined('IN_DISCUZ')) {exit('Access Denied');}function build_cache_smilies() {$data = array();$query = DB::query("SELECT s.id, s.code, s.url, t.typeid FROM ".DB::table('common_smiley')." sLEFT JOIN ".DB::table('forum_imagetype')." t ON t.typeid=s.typeid WHERE s.type='smiley' AND s.code<>'' AND t.available='1' ORDER BY LENGTH(s.code) DESC");$data = array('searcharray' => array(), 'replacearray' => array(), 'typearray' => array());while($smiley = DB::fetch($query)) {$data['searcharray'][$smiley['id']] = '/'.preg_quote(dhtmlspecialchars($smiley['code']), '/').'/';$data['replacearray'][$smiley['id']] = $smiley['url'];$data['typearray'][$smiley['id']] = $smiley['typeid'];}save_syscache('smilies', $data);}?>

建立这个cache_【cachename】.php和build_cache_【cachename】函数,按照指定的流程取出数据,使用save_syscache保存就可以了。按照标准方法建立的缓存,自动会加入缓存机制,后台更新缓存时,都会自动执行。
手动更新缓存的话,可以直接使用updatecache(),传名字和数组进去都可以。如果提示没有这个函数,需要
require_once libfile('function/cache');一下。更新缓存后就可以load来得到最新的缓存数据。使用$_G['cache']['【cachename】']来进行访问。


附带经常要使用到的dz的一些变量。

$adminid
1为管理员
2为总版主
3为版主
0表示否,即非管理组
-1表示 特殊组及除了1,2,3以外的系统组(即4,5,6,7,8组)

$displayorder
0 正常帖
1 板块置顶 1级置顶
2 分类置顶 2级置顶
3 全局置顶 3级置顶
-1 被删除的帖 回收站
-2 待审核的帖
-3 审核忽略
-4 草稿

Author Info :




原创粉丝点击