zblog数据库死锁的解决方法
2010年1月22日
zblog数据库死锁的解决方法
打开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