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

"\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]<?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')." s
LEFT 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);
}

?>[/php]
建立这个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 :
  • From:Discuz!X 初始化过程中会自动初始化的一些系统缓存
  • URL:https://blog.ihipop.com/2012/02/2990.html
  • Please Reserve This Link,Thanks!
  • 《Discuz!X 初始化过程中会自动初始化的一些系统缓存》上有2条评论

    发表回复

    您的电子邮箱地址不会被公开。 必填项已用*标注