基于AC数据库,本来做来是每次都要更新数据库的显示次数到数据库的。但实践证明,上了140的在线量该位置就要报冲突错误了。后台就改写成如下方式放到application中,每n分钟或其中的1个BANNER显示完毕触发向数据库中更新,实践证明效率大大滴好了转。以前经过实践推敲的好些代码,现在而今眼目下都不用了。慢慢贴出来吧。自己看代码建立相应表。及后台。
Call
BannerDisPlay()
Sub BannerDisPlay()
Dim ArrBanner,ArrLen,BannerData,PRVDBSTATE
BannerData = Application( " BannerData " )
ArrLen = UBound (BannerData)
If ArrLen = 0 Then
Response.Write " 该广告位没有数据 "
Exit Sub
Else
Dim b
Randomize
b = Int ((ArrLen * Rnd ))
If BannerData(b, 7 ) = False Then
Response.Write " <a href='BanenrGo.asp?ID= " & BannerData(b, 0 ) & " ' target='_blank'><img src=' " & BannerData(b, 2 ) & " ' width='468' height ='60' border='0'></a> "
Else
Response.Write(BannerData(b, 6 ))
End If
If Application( " BannerData " )(b, 5 ) - BannerData(b, 4 ) > 1 Then
If DBSTATE = False Then
DbOpen()
PRVDBSTATE = True
End If
Dim cs
Conn.Execute( " update [AD_Banner] set DisTimes= " & BannerData(b, 5 ) + 1 & " ,EndDate=now,HasOver=True where ADID= " & BannerData(b, 0 ))
Set cs = Server.CreateObject( " ZKXP.Cash " )
Set cs.Conn = Conn
Application.Lock()
cs.LoadBannerData
Application.UnLock()
Set cs = nothing
' Response.Write "<b>reload</b><br>"
Else
BannerData(b, 5 ) = BannerData(b, 5 ) + 1
Application.Lock()
' Response.Write "<br>addOneID="& BannerData(b,0) &"<br>"
' Response.Write "存入之前显示AP="&Application("BannerData")(b,5)&"Arr="&BannerData(b,5)&"<br>"
Application( " BannerData " ) = BannerData
' response.Write "存入之后显示AP="& Application("BannerData")(b,5) &"<br>"
Application.UnLock()
End If
If DateDiff ( " n " ,Application( " BannerDataSaveDate " ), now ) >= SBDtDif Then ' SBDtDif变量定义在UserBin
Application.Lock()
Application( " BannerDataSaveDate " ) = now
Application.UnLock()
Dim i
If DBSTATE = False Then
DbOpen()
PRVDBSTATE = True
End If
for i = 0 to uBound (Application( " BannerData " )) - 1
Conn.Execute( " update [AD_Banner] set DisTimes= " & Application( " BannerData " )(i, 5 ) & " where ADID= " & Application( " BannerData " )(i, 0 ))
next
End If
End If
If PRVDBSTATE = True Then DbClose()
BannerData = null
End Sub
Sub BannerDisPlay()
Dim ArrBanner,ArrLen,BannerData,PRVDBSTATE
BannerData = Application( " BannerData " )
ArrLen = UBound (BannerData)
If ArrLen = 0 Then
Response.Write " 该广告位没有数据 "
Exit Sub
Else
Dim b
Randomize
b = Int ((ArrLen * Rnd ))
If BannerData(b, 7 ) = False Then
Response.Write " <a href='BanenrGo.asp?ID= " & BannerData(b, 0 ) & " ' target='_blank'><img src=' " & BannerData(b, 2 ) & " ' width='468' height ='60' border='0'></a> "
Else
Response.Write(BannerData(b, 6 ))
End If
If Application( " BannerData " )(b, 5 ) - BannerData(b, 4 ) > 1 Then
If DBSTATE = False Then
DbOpen()
PRVDBSTATE = True
End If
Dim cs
Conn.Execute( " update [AD_Banner] set DisTimes= " & BannerData(b, 5 ) + 1 & " ,EndDate=now,HasOver=True where ADID= " & BannerData(b, 0 ))
Set cs = Server.CreateObject( " ZKXP.Cash " )
Set cs.Conn = Conn
Application.Lock()
cs.LoadBannerData
Application.UnLock()
Set cs = nothing
' Response.Write "<b>reload</b><br>"
Else
BannerData(b, 5 ) = BannerData(b, 5 ) + 1
Application.Lock()
' Response.Write "<br>addOneID="& BannerData(b,0) &"<br>"
' Response.Write "存入之前显示AP="&Application("BannerData")(b,5)&"Arr="&BannerData(b,5)&"<br>"
Application( " BannerData " ) = BannerData
' response.Write "存入之后显示AP="& Application("BannerData")(b,5) &"<br>"
Application.UnLock()
End If
If DateDiff ( " n " ,Application( " BannerDataSaveDate " ), now ) >= SBDtDif Then ' SBDtDif变量定义在UserBin
Application.Lock()
Application( " BannerDataSaveDate " ) = now
Application.UnLock()
Dim i
If DBSTATE = False Then
DbOpen()
PRVDBSTATE = True
End If
for i = 0 to uBound (Application( " BannerData " )) - 1
Conn.Execute( " update [AD_Banner] set DisTimes= " & Application( " BannerData " )(i, 5 ) & " where ADID= " & Application( " BannerData " )(i, 0 ))
next
End If
End If
If PRVDBSTATE = True Then DbClose()
BannerData = null
End Sub