Hallo!

> Ich habe hier ein Script, das zwar funktioniert aber f�rchterlich
langsam
> ist. Dauert am PWS bis zu 2 Minuten, bis eine Seite aufgebaut ist.
> Ich vermute, es liegt an:
> ...
>               IF rs("Guthaben") = 0 THEN
>                       Session("ID") = rs("BannerID") + 1
>               ELSE
> ...

Das liegt unter anderem genau daran, wenn die IDs nicht aufsteigend
vergeben sind und Dein Script dann in der Schleife jede Menge Recordsets
�ffnet und schlie�t, um zu den entsprechenden IDs zu gelangen.

Versuch einmal folgendes:

Zun�chst in der global.asa:

Application("cnString") = "..." ' --> Application_OnStart
Session("LastBannerID") = 0     ' --> Session_OnStart

Dann in Deinem Script:

<%@Language="VBScript" %>
<%
option explicit

dim bannerCount: bannerCount = 3

dim db: set db = Server.CreateObject("ADODB.Connection")
dim rs: set rs = Server.CreateObject("ADODB.Recordset")
db.Open Application("cnString")
do while bannerCount > 0
   rs.Open "select top " & bannerCount & " * from Banner" & _
           " where Guthaben > 0 and id > " & Session("LastBannerID") & _
           " order by BannerID", _
           db, adOpenStatic, adLockOptimistic, adCmdText
   do while not rs.Eof
      Response.Write "<a href=""redirect.asp?BannerID=" & rs("BannerID")
& _
                     """ target=""_blank""><img border=""0"" src=""" & _
                     rs("url") & """></a>"
      rs("Views") = rs("Views") + 1: rs("Guthaben") = rs("Guthaben") - 1
      rs.Update
      Session("LastBannerID") = rs("BannerID")
      rs.MoveNext
   loop
   bannerCount = bannerCount - rs.RecordCount
   if bannerCount > 0 then Session("LastBannerID") = 0
   rs.Close
loop
set rs = nothing: db.Close: set db = nothing
%>

1. option explicit beschleunigt jedes Script und ist auch noch sicherer.

2. Es erfolgen maximal 2 Zugriffe auf die Datenbank und der zweite auch
nur, wenn beim ersten weniger als drei Datens�tze zur�ckgegeben werden.
Die Session-Variable enth�lt die letzte "BannerID", so dass man die
n�chsten immer mit "where BannerID > ..." holen kann.

3. Deinem "redirect.asp" �bergibst Du nur die BannerID, damit dort die
Clicks gez�hlt werden k�nnen, musst Du ja eh den Datensatz einlesen und
dabei kannst Du auch die URL lesen. Warum z�hlst Du "Views" hoch und
"Guthaben" runter? Es reicht doch, die Views zu z�hlen. Das aktuelle
Guthaben kann doch aus den aktuellen Views und den geforderten Views
berechnet werden.

Freundliche Gr��e
Joachim van de Bruck



| [aspdedatabase] als [email protected] subscribed
| http://www.aspgerman.com/archiv/aspdedatabase/ = Listenarchiv
| Sie k�nnen sich unter folgender URL an- und abmelden:
| http://www.aspgerman.com/aspgerman/listen/anmelden/aspdedatabase.asp

Antwort per Email an