Z-Blog 留言评论显示IP地址和性能优化

所属分类: CMS教程 / z-blog 阅读数: 1475
收藏 0 赞 0 分享

经过对Z-Blog的代码进行分析,我发现其原因是大并发用户同时写数据库产生的原因。
我这里想到了一个针对这个问题的解决方案,就是时间缓存,定时写数据库,在一定时间内,数据只写入内存,不写入数据库,当缓存时间到了以后,再把内存的数据写入数据库。这样,即使再大的并发量,也不会再发生数据库死锁的问题了。
经过初步的代码修改和测试,发现修改完了以后就没有这个问题了。
修改方法是,打开FUNCTION目录下的c_html_js.asp文件,修改UpdateCountInfo函数为以下代码即可。

复制代码
代码如下:

Function UpdateCountInfo(id)
Dim strLastUpdate
Dim intArticleCount
Dim aryArticleCount
Dim objRS
Application.Lock
strLastUpdate=Application(ZC_BLOG_CLSID&"LAST_UPDATE")
aryArticleCount=Application(ZC_BLOG_CLSID&"CACHE_ARTICLE_VIEWCOUNT")
aryArticleCount(id)=aryArticleCount(id)+1
Application(ZC_BLOG_CLSID&"CACHE_ARTICLE_VIEWCOUNT")=aryArticleCount
Application.UnLock
If IsEmpty(strLastUpdate) Or Not IsDate(strLastUpdate) Then
Application.Lock
Application(ZC_BLOG_CLSID&"LAST_UPDATE") = Now()
strLastUpdate = Application(ZC_BLOG_CLSID&"LAST_UPDATE")
Application.UnLock
End If
If DateDiff("s",strLastUpdate,Now()) > 30 Then
'如果当前时间与上次保存计数值的时间差大于设定的时间间隔,则把计数值重新写入数据库
Call OpenConnect()
Set objRS=objConn.Execute("SELECT [log_ID],[log_ViewNums] FROM [blog_Article] WHERE [log_ID] =" & id)
If (not objRS.bof) And (not objRS.eof) Then
intArticleCount=objRS("log_ViewNums")
Else
intArticleCount=0
End If
objRS.Close
Set objRS=Nothing
If aryArticleCount(id) > intArticleCount Then
objConn.Execute("UPDATE [blog_Article] SET [log_ViewNums]=" & CStr(aryArticleCount(id)) & " WHERE [log_ID] =" & id)
Application.Lock
Application(ZC_BLOG_CLSID&"LAST_UPDATE") = Now()
Application.UnLock
Else
aryArticleCount(id) = intArticleCount
Application.Lock
Application(ZC_BLOG_CLSID&"CACHE_ARTICLE_VIEWCOUNT")=aryArticleCount
Application.UnLock
End If
Call CloseConnect()
End If
End Function

另外,默认的Z-Blog留言评论是没有用户IP地址显示的,通过一些修改,可以在留言中增加用户IP地址前三位的显示功能,具体实现方法如下。
修改c_system_lib.asp文件的Public Function MakeTemplate(strC)函数,加入下面语句:

复制代码
代码如下:

ReDim aryTemplateTagsName(12)
ReDim aryTemplateTagsValue(12)
aryTemplateTagsName( 12)="article/comment/ip"
if AuthorID=1 then
aryTemplateTagsValue(12)=""
else
aryTemplateTagsValue(12)="ip:" + Left(IP, InStrRev(IP, ".")) + "*"
end if
  修改TArticle的Function Export_CMTandTB()函数,将 objComment.LoadInfoByArray(Array(objRS("comm_ID"),objRS("log_ID"),objRS("comm_AuthorID"),objRS("comm_Author"),objRS("comm_Content"),objRS("comm_Email"),objRS("comm_HomePage"),objRS("comm_PostTime"),"","")) 改为 objComment.LoadInfoByArray(Array(objRS("comm_ID"),objRS("log_ID"),objRS("comm_AuthorID"),objRS("comm_Author"),objRS("comm_Content"),objRS("comm_Email"),objRS("comm_HomePage"),objRS("comm_PostTime"),objRS("comm_IP"),""))
  修改 b_article_comment.html ,增加 <#article/comment/ip#>标签。

之后,文章评论就会出现评论者的IP地址栏,不过有个问题是,当评论有人回复的是时候,只能留下最后一个回复者的IP地址。(原文)

更多精彩内容其他人还在看

zblog模板文件说明

关键字描述:说明 文件 模板 显示 日志 文章 引用 评论 页面 首页 Z-Blog模板类文件说明/TEMPLATE 1.default.html 首页显示模板,引用b_article-istop.html显示置顶文章,引用b_article-multi.html
收藏 0 赞 0 分享

z-blog评论加入Gravatar头像功能

关键字描述:功能 加入 评论 " Gravatar &ldquo #article/comment/emailm Gravatar提供的服务概念上十分简单,就是把个人email地址与头像捆绑(登录 www.gravatar.com申请帐户,上传照片即可完成)
收藏 0 赞 0 分享

Z-blog系统常量标签说明

关键字描述:说明 标签 系统 :< 博客 c_option.asp 标题 页面 认为 Z-Blog系统常量区标签类说明: 1.系统常量区(c_custom.asp,c_option.asp) 当前版本号:<#ZC_BLOG_VERSION#>
收藏 0 赞 0 分享

Z-Blog语言资源与文件缓存区标签

关键字描述:标签 文件 资源 语言 :< 引用 目录 最近 < INCLUDE 1.语言资源区(LANGUAGE/SimpChinese.asp) ZC_MSG001-ZC_MSGxxx 引用:<#ZC_MSGxxx#> 这里xxx就要引用
收藏 0 赞 0 分享

z-blog根据不同留言数显示不同文字

关键字描述:不同 文字 显示 留言 根据
收藏 0 赞 0 分享

z-blog自动加入版权信息

关键字描述:信息 版权 加入 自动 < 代码 " 可以 文章 转载   先在的网络基本都是抄来抄去,很多网站转载个人博客文章都不加入文章来源和原文地址,博客主辛辛苦苦写的文章就这样被别人盗窃了。有什么办法可以改善一下这些情况呢?      一:可以在你的zb
收藏 0 赞 0 分享

z-blog评论留言的引用按钮写法详解

关键字描述:详解 按钮 引用 评论 留言 < " > class .innerHTML z-blog默认主题的模板b_article_comment.html中 <ul class="msg">
收藏 0 赞 0 分享

z-blog让导航突出显示当前页链接条目

关键字描述:链接 当前 显示 导航 突出 " < .attr this 代码 z-blog让导航突出显示当前页链接条目: 我们的大致思路是这样的,首先用js给导航部分中当前链接项加个区分的ID,如<li id=“current&rdq
收藏 0 赞 0 分享

让我坚守ZBLOG的十二大理由

关键字描述:理由 ZBLOG 安装 优化 时间 WordPress 可以 文章 博客   让我坚守ZBLOG的十二大理由:      尽管WordPress是博客程序里面的老大,它的插件最多,模板最多,用的人最多等等。但ZBLOG对于国人来说还是有许多WordPress无
收藏 0 赞 0 分享

Z-Blog 文件复制插件

在同一个网站使用过多个Z-Blog系统的用户,可能会需要这样的功能,就是从一个Z-Blog调用另外一个Z-Blog的信息,例如最新文章、最新评论等,本插件即可完成这样的功能。
收藏 0 赞 0 分享
查看更多