织梦二次开发

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 763|回复: 0

[共用功能] 织梦“更新系统缓存”功能分析教程

[复制链接]

1046

主题

1109

帖子

5334

积分

超级版主

Rank: 8Rank: 8

金币
256
贡献
3959
发表于 2015-11-11 15:29:35 | 显示全部楼层 |阅读模式
  织梦系统的更新系统缓存指的是如下图所示:

更新系统缓存

更新系统缓存


  更新系统缓存主要是指更新以下内容:

  1、更新栏目缓存

  2、更新枚举缓存

  3、清理arclist调用缓存

  4、清理过期会员访问历史

  5、删除过期短信

  6、检测并清理错误文档

  前5个功能是系统默认更新的缓存内容,第六个是用户可以自己选择要更新的功能,如果只表面看更新这几个功能的话,好像非常麻烦,但是,当我们打开处理这些功能的文件sys_cache_up.php时,你会发现其实,这个文件里面的面都是调用的函数。

  在分析这里面的代码前,我们先来研究一下这个程序文件对应的织梦模板文件sys_cache_up.htm,在这个模板里面找到如下代码:

开始执行

开始执行


  当我们点击“开始执行”时,程序就进入到了sys_cache_up.php,开始执行这里面的代码,并把检测的结果放到模板代码<iframe name="stafrm" frameborder="0" id="stafrm" width="100%" height="100%"></iframe>地方,我做了一个图示给大家如下图所示:

更新缓存执行图

更新缓存执行图


  如果我们也选中了检测并清理错误文档的话,那么,这个会同第一步一起提交给sys_cache_up.php文件。

代码分析开始:

  1. 初始化设置每步操作步骤:
  1. if(empty($step)) $step = 1;
复制代码


  判断如果是提交过来的数据,则执行这个条件if($dopost == "ok")里面的代码。

  成功更新所有缓存的处理,这里以$step==-1作为判断是否成功

  2. 更新栏目缓存:

栏目缓存

栏目缓存


  这里面使用了二个函数:

          UpDateCatCache();
        ClearOptCache();

  第一个是更新栏目缓存,第二个是更新选项缓存。

  等更新完这一步以后,程序通过Showbox函数,跳转到了下面的连接:
  1. sys_cache_up.php?dopost=ok&step=2&uparc=$uparc
复制代码


  这个通过这个连接转到第二步,更新枚举缓存。

  3. 更新枚举缓存代码也非常简单就是调用一个函数:

更新枚举缓存

更新枚举缓存


  这里面主要用到了函数WriteEnumsCache()来进行更新枚举缓存。

  4. 走完第三步后,进入第四步,也就是 else if($step == 3)条件里面,这一步主要是:清理arclist调用缓存、过期会员访问历史、过期短信

  清理arclist调用缓存:
  1. $dsql->ExecuteNoneQuery("DELETE FROM `#@__arccache`");
复制代码


  清理过期会员访问历史:
  1. $dsql->ExecuteNoneQuery("DELETE FROM `#@__member_vhistory` WHERE vtime<'$oldtime' ");
复制代码


  清理过期短信:
  1. $dsql->ExecuteNoneQuery("DELETE FROM `#@__member_pms` WHERE sendtime<'$oldtime' ");
复制代码


  5. 如果选中了“检测并清理错误文档”则提示这一项操作已经在这里废除了,请到系统——>系统错误修复[S]中操作。如果没有选择,则提示更新缓存成功:
6.jpg

7.jpg
回复

使用道具 举报

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

本版积分规则

QQ|织梦二次开发

GMT+8, 2019-9-17 20:49 , Processed in 0.215982 second(s), 27 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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