Avatar billede mortency Nybegynder
16. juni 2003 - 14:45 Der er 7 kommentarer og
2 løsninger

Optimalisere script så det blir hurtigere.

Hei!

Hvis jeg lager kun en redirect så går scriptet 10 ganger så fort. Hvorfor er dette scriptet så tregt og hva kan jeg gjøre? Scriptet teller antall klikk på en site.

<%
on error resume next

Response.Buffer = True
%>
<!--#include file ="include/dbconn.asp"-->
<%
dim adoCn
dim strSQL
set adoCn = Server.CreateObject("ADODB.Connection")
adoCn.Open strConn
%>     
<!--#include file ="include/dbconn_error.asp"-->
<%
dim strUrl,strDocID,strSub,strCat,i

strUrl = Request.ServerVariables("QUERY_STRING")

strUrl = Right(strUrl, Len(strUrl)-4)

Set adoRs=Server.CreateObject("ADODB.Recordset")
adoRs.CursorLocation = 2 ' adUseServer
adoRs.CursorType = 2 ' adOpenDynamic
adoRs.LockType = 3 ' adLockOptimistic   
       
strSQL = "SELECT * FROM tblClick"
adoRs.Open strSQL, strConn, , , &H0001 ' adCmdText

i = 0

Do While not adoRs.eof
    If strUrl = adoRs("CUrl") Then
        i = 1
        adoRs("CClicks") = adoRs("CClicks") + 1
    End If
    adoRs.Movenext
Loop

    If i = 0 Then
        adoRs.AddNew
        adoRs("CUrl") = strUrl
        adoRs("CClicks") = 1
        adoRS.Update
    End if
   
adoRs.Close
Set adoRS = Nothing
       
adoCn.Close
set adoCn = nothing

response.redirect(strurl)
%>
Avatar billede -master-d- Nybegynder
16. juni 2003 - 14:55 #1
Lav din strSQL sådan her.

strSQL = "SELECT CUrl,CClicks FROM tblClick"

Så skulle den være lidt hurtigere.
Avatar billede mortency Nybegynder
16. juni 2003 - 15:07 #2
Det er det ikke noe hjelp i! Noe annet som kan gjøres?
Avatar billede erikjacobsen Ekspert
16. juni 2003 - 15:13 #3
Du skal ikke løbe igennem med en while. Brug en update/insert og en select
med "... WHERE Curl='" & strUrl & "'"
Avatar billede mortency Nybegynder
16. juni 2003 - 15:34 #4
Hvordan skal jeg lage det da?
Avatar billede coolcoder Nybegynder
16. juni 2003 - 19:35 #5
i stedet for at åbne et recordset kan du klare det hele med SQL:

adoCn.execute("UPDATE tblClick SET CClicks = CClicks + 1 WHERE CUrl = " & strURL)


Denne burde klare opgaven på inden tid
Avatar billede erikjacobsen Ekspert
18. juni 2003 - 21:17 #6
Har du prøvet?
Avatar billede coolcoder Nybegynder
18. juni 2003 - 21:42 #7
hvis det ikke virker skal du lige have et par gnyffer omkring strURL:

adoCn.execute("UPDATE tblClick SET CClicks = CClicks + 1 WHERE CUrl = '" & strURL & "'")
Avatar billede mortency Nybegynder
19. juni 2003 - 09:08 #8
Scriptet ble sånn som dette. Virker mye raskere.

<%
on error resume next

Response.Buffer = True
%>
<!--#include file ="include/dbconn.asp"-->
<%
dim adoCn
dim strSQL
set adoCn = Server.CreateObject("ADODB.Connection")
adoCn.Open strConn
%>     
<!--#include file ="include/dbconn_error.asp"-->
<%
dim strUrl
strUrl = Request.ServerVariables("QUERY_STRING")
strUrl = Right(strUrl, Len(strUrl)-4)

strSQL = "SELECT CUrl,CClicks FROM tblClick WHERE Curl='" & strUrl & "'"
set adoRs = adoCn.Execute(strSQL)

If adoRs.EOF OR adoRS.BOF Then
        adoCn.execute("INSERT INTO tblClick (CUrl,CClicks) VALUES ('" & strURL & "', 1)")
Else
        adoCn.execute("UPDATE tblClick SET CClicks = CClicks + 1 WHERE CUrl ='" & strURL & "'")
End if
   
adoRs.Close
Set adoRS = Nothing
       
adoCn.Close
set adoCn = nothing

response.redirect(strurl)
%>
Avatar billede mortency Nybegynder
19. juni 2003 - 09:10 #9
Gav 30 point til hver av dere.

Takk for hjelpen...
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester