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

本文介绍了一种基于AC数据库的ASP广告轮显代码优化方案,通过将数据存储在application对象中减少数据库访问频率,有效避免高并发时的冲突错误,并提高了广告轮显效率。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

基于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
posted on 2006-03-31 12:17 堕落的卖猪贩 阅读( ...) 评论( ...) 编辑 收藏

转载于:https://www.cnblogs.com/zkxp/archive/2006/03/31/363454.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值