手机游戏
经典单机
角色扮演
休闲益智
动作冒险
射击枪战
赛车竞速
模拟经营
解密闯关
策略战争
手机软件
时尚购物
体育运动
资讯阅读
教育学习
摄影摄像
生活服务
效率办公
聊天社交
视频盒子
其它软件
新闻资讯
游戏攻略
软件教程
游戏问答
软件资讯
软件技术
叨叨念念
网站技术
技术问答
软件教程
资源资料
原创作品
代码学习
网页设计
网络技术
合集
合集
游戏合集
软件合集
资讯合集
视频合集
首页 > 原创作品 > 原创作品

emlog添加热门日志(热门文章)缓存

作者:星知苑 时间:2012-12-23 18:49:25

emlog的缓存文件是include/lib下的cache.php文件,由这个文件控制emlog的缓存文件的生成的,这个是emlog的生成缓存类。

生成缓存的好处就是减少查询数据库的次数,给系统减少压力。

比如emlog博客的热门日志和随机日志是不生成缓存的,直接通过查询数据得到的数据。

那么怎么来对热门日志和随机日志进行缓存呢?下面的教程就会说到如何添加热门日志的缓存。

 

下面开始如何修改,由于是HACK程序,所以修改前先备份数据库和数据,免的出现以外。[break]

 

修改cache.php文件:

1.在class cache{}中添加private $hotlog_cache;

2.在最新日志下面添加热门日志的缓存代码。

	 /**
	 * 热门日志
	 */
	private function mc_hotlog() {
		$row = $this->db->fetch_array($this->db->query("SELECT option_value FROM " . DB_PREFIX . "options where option_name='index_hotlognum'"));
		$index_hotlognum = $row['option_value'];
		$sql = "SELECT gid,title FROM " . DB_PREFIX . "blog WHERE hide='n' and type='blog' ORDER BY views DESC LIMIT 0, $index_hotlognum";
		$res = $this->db->query($sql);
		$logs = array();
		while ($row = $this->db->fetch_array($res)) {
			$row['gid'] = intval($row['gid']);
			$row['title'] = htmlspecialchars($row['title']);
			$logs[] = $row;
		}
		$cacheData = serialize($logs);
		$this->cacheWrite($cacheData, 'hotlog');
	}

上述代码只是对原来热门日志排行进行的缓存。

 

修改module.php文件:

3.剩下的就是主题读取热门日志的缓存和更新热门日志的缓存时间。因为热门日志不像评论,最新等等的排行榜(每次只要有新的日志或评论的时间更新缓存就可以了),所以热门日志排行榜(点击数每时每刻多在变化)更新的话除了上述日志(评论)的操作更新缓存外,还应该靠时间来更新缓存。

 

by 2013-05-05 13:50:09更新:

修复爆出路径的可能。更新缓存生成缓存文件时,由于缓存文件没有生成,读取缓存中unserialize函数和foreach函数多会报错。

cache.php文件修改:(在这个文件的最后几行)

			if ($fp = fopen($cachefile, 'r')) {
				$data = @fread($fp, filesize($cachefile));//添加@
				fclose($fp);
				$this->{$cacheName.'_cache'} = @unserialize(str_replace("<?php exit;//", '', $data));//添加@
				return $this->{$cacheName.'_cache'};

 

module.php修改如下:
<?php
//widget:热门日志
function widget_hotlog($title){
	global $CACHE; 
	$hotlogfile = EMLOG_ROOT . '/content/cache/hotlog.php';//缓存路径
	$hottime = is_file($hotlogfile)?filectime($hotlogfile):'0';//判断缓存是否存在,存在输出缓存文件的时间,不存在输出0
	if ($hottime <(time()-3600)){$CACHE->updateCache('hotlog');}//判断缓存是否过期,过期更新缓存,这里是1小时。
	$hotLogs_cache = $CACHE->readCache('hotlog');?>
        <h3><span><?php echo $title; ?></span></h3>
        <ul id="hotlog">
        <?php if(is_array($hotLogs_cache) && !empty($hotLogs_cache)){
            foreach($hotLogs_cache as $value): ?>
        <li><a href="<?php echo Url::log($value['gid']); ?>"><?php echo $value['title']; ?></a></li>
        <?php endforeach; }
         else {
         echo '正在更新缓存……<br />请刷新浏览器!';
         }?>
        </ul>
<?php }?>

良心推荐

高效办公软件推荐
  • 千米app
  • 雅清达APP
  • 飞书文档网页版
  • 金山文档免费下载
  • 互助文档下载
  • 文件夹管家app
作为打工人无疑就是可以在工作完成之后可以尽情的享受不用工作的休闲时间,但是往往都是事与愿违的很多的事情,有效的提高办公的效率才是唯一的王道不只是要有着自己的办公的方式还需要有一个很好的软件来帮助你,简单的用法直接让你的工作效率是更加的高赶紧来下载吧这有着很多的可以帮助到你升职加薪的。

相关资讯