好!欢迎访问迷津渡口 现在时间是:

迷津渡口

越感到迷惑 越接近真理

emlog MVC解构7--工具类们之Cache

emlog拥有各种各样的工具类,保存在include/lib/里。

下面首先来分析非常重要的Cache文本缓存类。

属性表:

属性注释
private $db一个数据库类实例,一个MySql或者MySqlii类实例,两种类属性和方法一致
private static $instance = null静态属性,一个Cache类的实例
private $options_cache站点配置缓存,emlog_options表的数组形式
private $user_cache用户信息缓存,emlog_user表的数组形式
private $sta_cache

站点统计缓存,包含全站和每个用户的日志、评论、微语信息:

array(

'lognum' => emlog_blog表已提交的日志总数量,

'draftnum' => emlog_blog表草稿的数量,

        'checknum' => emlog_blog表未审核的日志数量,

'comnum' => emlog_comment表已审核发表的评论数量,

        'hidecomnum' => emlog_comment表未审核的评论数量,

'comnum_all' => emlog_comment表已提交的评论总数量,

'twnum' => emlog_twitter表已发表的微语总数量,

        // 每个用户的日志、评论和微语信息,下面仅列出一个模板

        '$userid' => array (

'lognum' => 此用户已提交的日志总数量,

'draftnum' => 此用户草稿的数量,

'commentnum' => 此用户被审核通过评论数量,

'hidecommentnum' => 此用户未被审核通过的评论数量,

'twnum' => 此用户发表的微语数量

        ),

);


private $comment_cache

最新评论缓存数组,一般是10条评论,每条评论包含:

array(

'cid' => 评论唯一ID,

'gid' => 评论所属日志ID,

'name' => 评论提交者名称,

'date' => 评论提交时间戳,

'page' => 评论在第几页,

'mail' => 评论提交者的邮箱,

'content' => 评论内容,

);


private $tags_cache

侧边栏标签缓存数组,每个标签数组包含:

array(

'tagurl' => 标签的地址,仅包含标签部分,如http://www.qingzz.cn/tag/emlog是emlog的访问地址则这里的值为emlog,

'tagname' => 标签的名字,

'fontsize' => 标签的字体大小,

'usenum' => 标签被使用的次数

);


private $sort_cache侧边栏分类缓存数组,emlog_sort表的数组形式
private $link_cache友情链接缓存数组,emlog_link表的数组形式
private $navi_cache导航缓存数组,emlog_navi表的数组形式
private $newlog_cache最新文章缓存数组,一般是10篇文章
private $newtw_cache最新微语缓存数组,一般是10条微语
private $record_cache
文章归档缓存数组,根据月和日为分组方式归档文章
private $logtags_cache文章标签缓存数组,每篇文章标签构成二级数组
private $logsort_cache文章分类缓存数组,每篇文章分类构成二级数组
private $logalias_cache文章别名缓存数组

方法表:

方法注释
private function __construct()构造方法,配置$this->db实例化数据库连接
public static function getInstance()静态方法,配置$this->instance为数据库连接实例并返回
function updateCache($cacheMethodName=null)

用以调用内部类似mc_xxx()更新缓存,参数$cacheMethodName默认为null,此时函数将调用所有Cache类的mc_xxx方法,更新所有缓存;更新单个缓存时,$cacheMethodName配置为需要更新缓存的属性字符串,如'options',则函数将单独调用mc_options();更新多个缓存时,$cacheMethodName配置为多个需要更新缓存的属性字符串组成的数组,如array('options','user'),则函数将按顺序调用mc_options()和mc_user()。

注意:

更新缓存的方法以mc_开头,后面跟更新的属性名称

private function mc_options()站点配置缓存更新,将emlog_options表简单处理并serialize后的字符串缓存,调用writeCache写入options.php文件,失败则仍以数组形式保留在$options_cache属性里
private function mc_user()用户信息缓存更新,emlog_user表简单处理并serialize后的字符串缓存,调用writeCache写入user.php文件,失败则仍以数组形式保留在$user_cache属性里
private function mc_sta()

站点统计缓存更新,通过统计查询获取的站点统计信息处理并serialize后的字符串缓存,调用writeCache写入sta.php文件,失败则仍以数组形式保留在$sta_cache属性里


private function mc_comment()最新评论缓存更新,根据Options配置的个数获取侧边栏输出的最新评论的信息处理并serialize后的字符串缓存,调用writeCache写入comment.php文件,失败则仍以数组形式保留在$comment_cache属性里
private function mc_tags()侧边栏标签缓存更新,处理后serialize后的字符串缓存,调用writeCache写入tags.php文件,失败则仍以数组形式保留在$tags_cache属性里
private function mc_sort()侧边栏分类缓存更新,emlog_sort表简单处理并serialize后的字符串缓存,调用writeCache写入sort.php文件,失败则仍以数组形式保留在$sort_cache属性里
private function mc_link()友情链接缓存更新,emlog_link表简单处理并serialize后的字符串缓存,调用writeCache写入link.php文件,失败则仍以数组形式保留在$link_cache属性里
private function mc_navi()导航缓存更新,emlog_navi表简单处理并serialize后的字符串缓存,调用writeCache写入navi.php文件,失败则仍以数组形式保留在$navi_cache属性里
private function mc_newlog()最新文章缓存更新,根据Options配置的个数获取侧边栏输出的最新文章的信息处理并serialize后的字符串缓存,调用writeCache写入newlog.php文件,失败则仍以数组形式保留在$newlog_cache属性里
private function mc_newtw()最新微语缓存更新,根据Options配置的个数获取侧边栏输出的最新文章的信息处理并serialize后的字符串缓存,调用writeCache写入newtw.php文件,失败则仍以数组形式保留在$newtw_cache属性里
private function mc_record()文章归档缓存更新,根据月和日为分组方式归档文章,处理信息并serialize后的字符串缓存,调用writeCache写入record.php文件,失败则仍以数组形式保留在$record_cache属性里
private function mc_logtags()

文章标签缓存更新,每篇文章标签构成二级数组,处理信息并serialize后的字符串缓存,调用writeCache写入logtags.php文件,失败则仍以数组形式保留在$logtags_cache属性里

private function mc_logsort()文章分类缓存更新,每篇文章分类构成二级数组,处理信息并serialize后的字符串缓存,调用writeCache写入logsort.php文件,失败则仍以数组形式保留在$logsort_cache属性里
private function mc_logalias()文章别名缓存更新,处理信息并serialize后的字符串缓存,调用writeCache写入logalias.php文件,失败则仍以数组形式保留在$logalias_cache属性里
function cacheWrite($cacheData,$cacheName)

写入缓存,$cacheData是更新缓存的函数将数组serialize之后的结果,$cacheName是缓存属性的名称。

一般情况下,数据将保存在EMLOG_ROOT.'/content/cache/'.$cacheName.'.php'文件里面,php文件保存是因为添加必要的代码后可以保证用户无法通过访问地址获取缓存数据,数据为"<?php exit;//".$cacheData,访问此文件时将直接退出,不会访问后面的数据。另外写入后实例属性保存的数据将被清空,需要用readCache()重新将数据从文件获取到属性。

特殊情况下,就是文件无法打开写入的情况下,缓存将仍以字符串的形式保留在缓存实例的属性里。

function readCache($cacheName)读取缓存文件,$cacheName是缓存属性的名称,如果实例相应的属性里面已经有数据,则直接返回属性保存的数据。如果缓存不存在则自动生成缓存后再把数据写入属性里,经过去除前缀和unserialize的处理后返回属性保存的数据。


点赞0
 标签: emlog mvc cache
   支持一下
挤眼 亲亲 咆哮 开心 想想 可怜 糗大了 委屈 哈哈 小声点 右哼哼 左哼哼 疑问 坏笑 赚钱啦 悲伤 耍酷 勾引 厉害 握手 耶 嘻嘻 害羞 鼓掌 馋嘴 抓狂 抱抱 围观 威武 给力
 点赞
 签到
 表情
 图片
 代码
提交评论

清空信息
关闭评论
 00:00/00:00
我想和你虚度时光 - 花房姑娘(9)
  1. 恋恋风尘
  2. 恋恋风尘
  3. 恋恋风尘
  4. 恋恋风尘
  5. 恋恋风尘
  6. 恋恋风尘
  7. 恋恋风尘
  8. 恋恋风尘
  9. 恋恋风尘