子枫辅助网是全网最火爆最大的辅助网,每天更新原创辅助资源。请记住本站唯一域名:www.wuaif.com
emlog无需修改内核文章标签从缓存更改为调用数据库
emlog教程 2020-01-01 05:03:37 424 0

    晗枫在为文章添页添加文章标签的时候发现修复标签缓存问题后,如果emlog的标签数量较大时,程序缓存的标签文件非常大,如果标签有很多甚至有可能达到几十兆,这明显是自己在给服务器施加压力,如果在模板中添加了调用文章标签代码,每次进入文章页或者进入添加了文章标签代码的页面会非常卡,原因就是服务器需要去那个有可能几十兆的标签缓存文件中获取此文章的标签,每次访问服务器都要访问如此之大的文件,普通服务器怎么可能吃得消呢?相信各位站长在数据量大的时候也会发现emlog程序在偷偷变卡吧?但是不知道是什么原因,晗枫在这里告诉大家就是这个原因,下面晗枫告诉大家是怎么解决的。

    想要查看emlog文章标签修复方法的朋友们去这里查看方法教程《emlog文章标签缓存出错问题修复教程

    晗枫的解决办法就是将emlog程序自带的从缓存获取文章标签的代码废除,在模板中增加代码来解决,原理就是让大家每访问一个文章时就去数据库中查询一次标签,这样可以大大减少服务器的压力,之前晗枫也去问过其它大佬博客的站长,他们都觉得还是本地缓存调用比较快,但是经过测试证明,还是调用数据库比较快,这点针对国外服务器有着很好的效果,大家不妨试一试。

首先找到此文件:根目录/include/lib/cache.php,将以下代码注释掉。

	private function mc_logtags() {
		$query = $this->db->query("SELECT gid FROM " . DB_PREFIX . "blog where type='blog'");
		$log_cache_tags = array();
		while ($row = $this->db->fetch_array($query)) {
			$logid = $row['gid'];
			$tags = array();
			$tquery = "SELECT tagname,tid FROM " . DB_PREFIX . "tag WHERE gid LIKE '%,$logid,%' or gid LIKE '%,$logid%' or gid LIKE '%$logid,%' or gid LIKE '$logid'";
			$result = $this->db->query($tquery);
			while ($trow = $this->db->fetch_array($result)) {
				$trow['tagurl'] = urlencode($trow['tagname']);
				$trow['tagname'] = htmlspecialchars($trow['tagname']);
				$trow['tid'] = intval($trow['tid']);
				$tags[] = $trow;
			}
			$log_cache_tags[$logid] = $tags;
			unset($tags);
		}
		$cacheData = serialize($log_cache_tags);
		$this->cacheWrite($cacheData, 'logtags');
	}

在找到模板目录中的文件:根目录/content/templates/模板文件夹名/module.php,添加如下代码。

<?php
//blog:文章标签
function Tea_blog_tag($blogid){
	//调用数据库版标签
	$db = MySql::getInstance();
	$query = $db->query("SELECT gid FROM ".DB_PREFIX."blog where type='blog' and gid='".$blogid."'");
	while($row = $db->fetch_array($query)){
		$logid = $row['gid'];
		$tags = array();
		$tquery = "SELECT tagname,tid FROM " . DB_PREFIX . "tag WHERE gid LIKE '%,".$logid.",%' or gid LIKE '%,".$logid."' or gid LIKE '".$logid.",%' or gid LIKE '".$logid."'" ;
		$result = $db->query($tquery);
		while ($trow = $db->fetch_array($result)) {
			$trow['tagurl'] = urlencode($trow['tagname']);
			$trow['tagname'] = htmlspecialchars($trow['tagname']);
			$trow['tid'] = intval($trow['tid']);
			$tags[] = $trow;
		}
	}
	if(!empty($tags)){
		foreach ($tags as $value){
			echo '<a href="'.Url::tag($value['tagurl']).'" title="'.$value['tagname'].'">'.$value['tagname'].'</a>';
		}
	}else{
		echo '<a>无标签</a>';
	}
}
?>

添加好以后在你想要添加文章标签的地方添加代码:

<?php Tea_blog_tag($logid);/*$logid可更换其它获取文章ID的代码,根据你的代码修改即可*/?>

这样修改之后,在访问页面的时候并不会影响多少加载速度而破坏用户体验,晗枫在子枫资源网也是这样做的,大大减少了服务器的压力。

推荐数据量大的网站考虑修改此方法。

如果你是小站长,数据量不大觉得有可能是此问题的也可以修改试试,毕竟做网站嘛,不折腾怎么可能进步,加油!!!

文章说明
免责声明:
本站提供的一切软件、教程和游戏辅助仅限用于娱乐和研究目的;不得将上述内容用于商业或者非法用途,否则,一切后果请用户自负。本站信息来自网络收集,版权争议与本站无关。您必须在下载后的24个小时之内从您的设备中彻底删除。如果您喜欢该程序,请支持正版,购买注册,得到更好的正版服务。如有侵权请邮件与我们联系处理。敬请谅解!
评论留言

昵称

个人资料
个人资料
一个热衷于网站制作的小小程序员。
  • 文章2164
  • 评论299
  • 微语7
日历
二零二零年08月
     12
3456789
10111213141516
17181920212223
24252627282930
31