Avatar billede justdoit Nybegynder
22. oktober 2002 - 12:40 Der er 17 kommentarer og
3 løsninger

Laaangsommm visning af script i localhost!

Jeg sidder med en winXP maskine der køre på IIS.

Jeg er ved at lave nogle sider i asp og jeg bruger en MySQL database!

Men når jeg skal se hvad jeg har lavet i localhost, så går det sindsygt langsomt med at komme frem. Computeren står og arbejder helt vildt, selvom det er en lille database - HVORFOR ???

Vi snakker ca. 60 sek for at åbne en side, der skal skrive 10 overskrifter og 4 små billeder ud!!
Avatar billede rasmuslund Nybegynder
22. oktober 2002 - 12:46 #1
Ligger din SQL DB også lokalt?
Avatar billede justdoit Nybegynder
22. oktober 2002 - 12:47 #2
ja..
Avatar billede rasmuslund Nybegynder
22. oktober 2002 - 12:57 #3
okay så lyder det jo mærkeligt... Har nemlig været ude for at hvis man kører op mod en db som ligger eksternt så går det langsomt.

For du overhovedet noget ud på siden eller for du en timeout?
Avatar billede justdoit Nybegynder
22. oktober 2002 - 13:00 #4
Jeg får 2/3 af det skrevet ud, og så kommer er timeout!
Avatar billede justdoit Nybegynder
22. oktober 2002 - 13:06 #5
Jeg bruger MySQL-Front til at lave db'en i, men det har vel ikke rigtig noget at sige!
Avatar billede rasmuslund Nybegynder
22. oktober 2002 - 13:11 #6
Nej det tror jeg ikke - check dit script godt igennem - tror der er nogle løkker som den ikke kan blive færdig med.

F.eks. vis man har glemt et recordset.movenext når man løber recordsets igennem.

:-)
Avatar billede justdoit Nybegynder
22. oktober 2002 - 13:17 #7
Her er scriptet som tager vildt lang tid!!

<%
Dim strConnect, Conn

'Åbner connection
Set Conn = Server.CreateObject("ADODB.Connection")
Conn.Open ConString 
sql = "SELECT * FROM Kategori"
Set objRec = Server.CreateObject("ADODB.Recordset")
objRec.open sql, Conn

int_count = 0

%>
<table width="520" border="0" cellspacing="0" cellpadding="0">
  <% While NOT objRec.EOF
 
Set Conn2 = Server.CreateObject("ADODB.Connection")
Conn2.Open ConString 
sql2 = "SELECT * FROM U_Katagori WHERE u_kategoriId = " & objRec("kategoriId")
Set objRec2 = Server.CreateObject("ADODB.Recordset")
objRec2.open sql2, Conn2

    If int_count = 0 Then
        Response.Write "<tr>"
    End If
  %>
    <td>   
                                          <table width="260" border="0" cellspacing="0" cellpadding="0">
                                            <tr>
                                              <td rowspan="2" width="5" valign="top"></td>
                                              <td rowspan="2" width="59" valign="top">
                                                <%=("<table width=""55"" height=""55"" border=""0"" cellspacing=""0"" cellpadding=""0""><tr><td background='billeder/upload/forside/"& objRec("kategoriPic") & "' width=""51"" height=""51""><table width=""55"" border=""0"" cellspacing=""0"" cellpadding=""0""><tr><td rowspan=""4"" width=""2"" class=""hvid""></td><td colspan=""2"" height=""2"" class=""hvid""></td><td rowspan=""2"" width=""2"" class=""hvid""></td></tr><tr><td height=""36"" width=""36""></td><td width=""17""></td></tr><tr> <td height=""17""></td><td colspan=""2"" rowspan=""2"" background='billeder/site/forside_transperant.gif' height=""19"" width=""19""></td></tr><tr><td height=""2"" class=""hvid""></td></tr></table></td></tr></table>")%>
                                              </td>
                                              <td rowspan="2" width="9" valign="top"></td>
                                              <td valign="top" class="overskrift_forside"><%=("<a onfocus=""this.blur()"" href=""kategori_all.asp?id=" & objRec("kategoriId") & """>" & objRec("kategoriNavn") & "</a>")%>&nbsp;<span class="hovedtekst_graa">[12]</span></td>
                                            </tr>
                                            <tr>
                                              <td width="191" valign="top" class="hovedtekst">
                                                <%
  Lobs = 8 ' her kan du skrive det antal gange den skal loope

  For X = 1 To Int(Lobs)
    If NOT objRec2.EOF Then
      Response.Write "<a onfocus=""this.blur()"" href=""se_denne_side.asp?kategori=" & objRec2("Id") & """>" & objRec2("u_kategoriNavn") & "</a>"

      objRec2.movenext
 
      'Tilføj denne linje, så der ikke tilføjes "..." eller "," hvis dette var den sidste post
      If objRec2.EOF Then Exit For

      If X < Int(Lobs) Then
        Response.Write ", "
      Else
        Response.Write "..."
      End If
    End If
  Next
%>
Avatar billede rasmuslund Nybegynder
22. oktober 2002 - 13:33 #8
Du benytter en WHILE løkke som ikke er afsluttet.

Husk WEND til sidst

Rasmus :-)
Avatar billede the_bma_man Nybegynder
22. oktober 2002 - 14:20 #9
For ikke at snakke om, at du inden i loopet danner nye instanser af
Conn2 = Server.CreateObject("ADODB.Connection")
og
Set objRec2 = Server.CreateObject("ADODB.Recordset")

Og dem får du ikke nedlagt igen !??!
Avatar billede justdoit Nybegynder
22. oktober 2002 - 15:55 #10
I må begge undskylde, men jeg havde ikke fået hele scriptet med, her er det sidste af scriptet, og så løses begge jeres problemstillinger:

Her skal det første af scriptet stå:

Dette er det nye, nedenfor:
  <%
    If int_count = 1 Then
        Response.Write "</tr>"
        int_count = 0
    Else
        int_count = 1
    End If
   
objRec.MoveNext()
   
Wend
%>
    </table>
<%
objRec.close
Conn.Close
'Set Conn = Nothing
objRec2.close
Conn2.Close
'Set Conn2 = Nothing
%>
Avatar billede justdoit Nybegynder
22. oktober 2002 - 15:56 #11
Kan det være noget i mine opstillinger på computeren?
Avatar billede the_bma_man Nybegynder
24. oktober 2002 - 08:34 #12
Nej, det løser det ikke helt.
Du nedlægger dine objekter udenfor løkken.
Men du danner dem inde i løkken.
Prøv at flytte de sidste linier ind i løkken - og lad være at udkommentere Set conn2=nothing og husk lige at sette objrec=notthing også - igen inde i løkken.
Avatar billede justdoit Nybegynder
24. oktober 2002 - 11:37 #13
ok

Nu har jeg flyttet rundt på det, så det nederste af scriptet ser sådan her ud - men den er stadig MEGET tung af loade!


Else
        Response.Write "..."
      End If
    End If
  Next
  objRec2.close
Conn2.Close
Set Conn2 = Nothing

%>
                                              </td>
                                            </tr>
                                            <tr>
                                              <td height="15"></td>
                                            </tr>
                                          </table>
    </td>
  <%
    If int_count = 1 Then
        Response.Write "</tr>"
        int_count = 0
    Else
        int_count = 1
    End If
   
objRec.MoveNext()
   
Wend
%>
    </table>
<%
objRec.close
Conn.Close
Set Conn = Nothing
%>
Avatar billede rasmuslund Nybegynder
24. oktober 2002 - 12:12 #14
Jeg har tidligere haft meget hjælp af disse artikler når jeg optimeret.

http://activedeveloper.dk/aspdigital/2001090701.asp
http://activedeveloper.dk/aspdigital/special/asptips.asp

Især den først har jeg brugt meget - så kan du nemlig se hvad det er der tager lang tid på din side - og så fokusere på det område at optimere.

Rasmus :-)
Avatar billede rasmuslund Nybegynder
24. oktober 2002 - 12:13 #15
Avatar billede justdoit Nybegynder
24. oktober 2002 - 12:28 #16
Jeg har lige fået denne tid:

Eksekveringstid: 0 minutes 54 seconds 698 milliseconds
Avatar billede rasmuslund Nybegynder
24. oktober 2002 - 12:42 #17
ja det jo ik så godt - prøv at sætte nogel flere tidstjek ind f.eks. i løkken !

Så kan du se hvorlang tid et enkelt gennemløb tager

Rasmus :-)
Avatar billede justdoit Nybegynder
24. oktober 2002 - 12:52 #18
Jeg har fundet ud af hvor det er den tager så lang tid:

Jeg har en Overskrift der hedder Kategori som ligger i en tabel. Så har jeg en masse underkategorier, som ligger i en anden tabel, hvor underkategoriens id passer sammen med overskriftens kategori:

Håber du forstår ;-)

Underkategorierne bliver skrevet hurtigt ud, men problemet ligger ved Kategorien (overskrift) det tager sindsygt lang tid!

Første overskrift: Eksekveringstid: 0 minutes 8 seconds 592 milliseconds
Anden overskrift: Eksekveringstid: 0 minutes 11 seconds 907 milliseconds
3. overskrift: Eksekveringstid: 0 minutes 14 seconds 721 milliseconds

12. overskrift: Eksekveringstid: 0 minutes 38 seconds 875 milliseconds

men jeg ved ikke helt hvad jeg skal gøre ved det, gør I ?
Avatar billede justdoit Nybegynder
24. oktober 2002 - 13:10 #19
Det er lidt underligt syntes jeg, for når jeg tester de for skellige overskrifter og underoverskrifter hver for sig, så går det meget hurtigt at skrive det ud, men når jeg så tager hele scriptet på en gang, så går det utroligt langsomt...

Hvad kan det være ??
Avatar billede justdoit Nybegynder
25. oktober 2002 - 17:26 #20
Jeg lukke da jeg ikke er kommet nærmere en løsning!
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