[ASP]可以统计显示次数并设定显示次数的广告轮显代码

基于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
原文地址:https://www.cnblogs.com/zkxp/p/363454.html