/ Forside / Teknologi / Udvikling / ASP / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
ASP
#NavnPoint
smorch 9259
Harlekin 1866
molokyle 1040
Steffanst.. 758
gandalf 657
smilly 564
gibson 560
cumano 530
MouseKeep.. 480
10  Random 410
Problemer med opslagstavle!
Fra : Lasse Nyberg


Dato : 03-01-03 18:48

Hej Alle
Først et godt nytår til jer alle samme..
Så problemet:
Jeg har lånt og omskrevet et script som virker på min egen
maskine (winXP sat op som server)
Men nåj jeg lægger det op på hotellet som er en Unix server får
jeg en time out.
Jeg formåder at problemet ligger i den nedenforstående del af
scriptet:
<%
                  
         ' Function treeMessage_Build() goes through the messages
recursively,
         ' and shows all messages in a tree-like structure.
         ' This is the basis of the "threaded" discussion that is
         ' unique to this script.
         Public Sub treeMessage_Build(MessageID, Level)
         Dim rsMessages
         StrSQL = "SELECT * FROM Messages WHERE ForumID = " & ForumID &
" ORDER BY Date DESC"
         Set rsMessages = Conn.Execute(strSQL)

         rsMessages.Filter = "MessageID = " & MessageID
         %>

         <TR>
            <TD WIDTH="50%" ALIGN="left"><IMG SRC="spacer.gif"
WIDTH="<%= Level * 20 %>" HEIGHT="1"><IMG SRC="message.gif"
width="24" height="19" ALIGN="absmiddle" HSPACE="4"><A
HREF="message.asp?MessageID=<%= rsMessages ("MessageID")
%>&ForumID=<%= rsMessages ("ForumID") %>"><%= rsMessages
("Subject") %></a></td>
             <TD WIDTH="30%" ALIGN="left"><IMG SRC="face.gif" WIDTH="18"
HEIGHT="25" ALT="" ALIGN="absmiddle" HSPACE="4"><A
HREF="mailto:<%= rsMessages ("Email")%>"><%= rsMessages
("PostedBy") %></A></td>
            <TD WIDTH="20%" ALIGN="right"><%= ShortDate(rsMessages
("Date")) %></td>
         </TR>
      
         <%
         rsMessages.Filter = "InReplyTo = " & MessageID
   
         If Not (rsMessages.EOF And rsMessages.BOF) Then
         rsMessages.MoveFirst
         While Not rsMessages.EOF
         treeMessage_Build rsMessages("MessageID"), Level+1
         rsMessages.MoveNext
         Wend
         End If
         End Sub
         %>
         <%
         If Request ("ForumID") = "" Then
         ' We don't have a valid ForumID, so go back to the main page.
         Response.Redirect "default.asp"
         End If

         Dim ForumID
         ForumID = Request("ForumID")

         Dim DB, rsForum, rsMessages, rsThreads
         
         StrSQL = "SELECT * FROM Forums WHERE ForumID = " & ForumID
         Set rsForum = Conn.Execute(strSQL)
         StrSQL = "SELECT * FROM Messages WHERE ForumID = " & ForumID &
" ORDER BY Date DESC"
         Set rsMessages = Conn.Execute(strSQL)
         StrSQL = "SELECT * FROM Messages WHERE ForumID = " & ForumID &
" AND InReplyTo = 0 ORDER BY Date DESC"
         Set rsThreads = Conn.Execute(strSQL)

         If rsThreads.BOF And rsThreads.EOF Then
         Response.Write "<P ALIGN='center'>Der er ikke nogel indlæg på
denne tavle.</P>"
         %>
         <B><A HREF="post.asp?ForumID=<%= ForumID%>">Indsæt nyt
opslag</A></B>
         <%
         Else
         rsThreads.MoveFirst
         %>
         <TABLE WIDTH="90%" BORDER="0" CELLSPACING="1" CELLPADDING="12"
ALIGN="CENTER">
            <TR ALIGN="LEFT" VALIGN="TOP" BGCOLOR="#FFFFFF">
               <TD colspan="2">
               <H1><%= rsForum("Forum")%></H1>
               <P><%= rsForum("Description")%></P>
               <P><form method="POST" action="forum.asp?ForumID=<%= ForumID
%>"><IMG SRC="message.gif" WIDTH="24" HEIGHT="19"
ALIGN="absmiddle" HSPACE="4"><A HREF="post.asp?ForumID=<%=
ForumID %>"><B>Indsæt nyt
opslag</B></A>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</form>
               </td>
            </tr>
         </tabel>
         <table width="100%" align="center" cellpadding="6"
cellspacing="0" border="0" style="border-style: solid;
border-width: 1">
          <tr>
               <td width="50%" align="left" valign="top"
style="border-style: solid; border-width: 1"><b>Subject</b></td>
             <td width="30%" align="center" valign="top"
style="border-style: solid; border-width: 1"><b>Posted
By</b></td>
             <td width="20%" align="center" valign="top"
style="border-style: solid; border-width: 1"><b>Date</b></td>
          </tr>
          <tr>
             <td COLSPAN="3" align="left" valign="top">
               <TABLE WIDTH="100%" BORDER="0" CELLSPACING="0"
CELLPADDING="2" >
                <%
                  While Not rsThreads.EOF
                  treeMessage_Build rsThreads("MessageID"), 0
                  rsThreads.MoveNext
                  Wend
                %>
               </TABLE>
               </td>
          </tr>
         </table>
         <br>
         <% End If %>
-
Når jeg oploader det og kalder siden får jeg følgende fejl:

Active Server Pages error 'ASP 0113'
Script timed out

/fff2002/login/forum/forum.asp

The maximum amount of time for a script to execute was exceeded.
You can change this limit by specifying a new value for the
property Server.ScriptTimeOut or by changing the value in the ASP
administration tools.

- Det første indlæg er vis korekt, besvarelsen til dette indlæg
bliver vis et utal af gange..

Er der nogle der kan fortælle mig hvad der kan være oversagen til
dette..

Jeg ved godt at det er god etik at undlade en del af sine kodet
linier men jeg er virkelig lorst, når det nu virker på en
XP-maskine..

Med venlig hilsen
Lasse Nyberg

--
Vil du lære at kode HTML, XHTML, CSS, SSI eller ASP ???
- Pædagogiske tutorials på dansk
- Kom godt i gang med koderne
KLIK HER! => http://www.html.dk/tutorials

 
 
Jens Gyldenkærne Cla~ (03-01-2003)
Kommentar
Fra : Jens Gyldenkærne Cla~


Dato : 03-01-03 22:05

Lasse Nyberg skrev:

> Jeg har lånt og omskrevet et script som virker på min egen
> maskine (winXP sat op som server)
> Men nåj jeg lægger det op på hotellet som er en Unix server
> får jeg en time out.

Er det samme datasæt der ligger bag? (altså er der præcis samme
antal beskeder på dit lokale system og på hotellet).
Er det samme database (Access?)


> Public Sub treeMessage_Build(MessageID, Level)
> Dim rsMessages
> StrSQL = "SELECT * FROM Messages WHERE ForumID
> = " & ForumID & " ORDER BY Date DESC"

Hvis rekursionen er afhængig af at sorteringen fungerer korrekt har
du formentlig et problem herover. Date er en funktion i Access (som
jeg antager at du benytter, ret mig hvis det er forkert) - og det
er derfor resultatet af denne funktion, dags dato, og ikke dit
datofelt der sorteres efter.
Brug [Date] for at sikre dig at det er feltnavnet der sorteres på -
eller bedre endnu, undgå feltnavne der kan fejltolkes af databasen.


> rsMessages.Filter = "MessageID = " & MessageID ...

> rsMessages.Filter = "InReplyTo = " & MessageID

Du bruger filter-kommandoen flere gange. Jeg kender den ikke selv,
men så vidt jeg ved er det bedre at lade databasen stå for
datahåndteringen - dvs. fyr flere select-sætningen af i stedet for
at arbejde med ét stort sæt.


> If Not (rsMessages.EOF And rsMessages.BOF) Then
> rsMessages.MoveFirst
> While Not rsMessages.EOF
> treeMessage_Build rsMessages("MessageID"),
> Level+1 rsMessages.MoveNext
> Wend

Jeg kan ikke gennemskue logikken i rekursiviteten her - den er
sikkert o.k., men jeg ville ikke anvende den uden at være helt
sikker på hvordan funktionen opfører sig i alle tænkelige
situationer. Er den gennemtestet?

> End Sub
> %>

[citat flyttet]
> Jeg ved godt at det er god etik at undlade en del af sine
> kodet linier men jeg er virkelig lorst, når det nu virker på
> en XP-maskine..

Uanset maskintypen har du allerede fat i at det er den rekursive
funktion den er gal med. Det havde derfor været rigeligt blot at
sende den.

> - Det første indlæg er vis korekt, besvarelsen til dette
> indlæg bliver vis et utal af gange..

Du kan slippe for timeout-fejlen ved at lave en break-statement ved
en passende høj værdi (indsæt en tællervariabel og tjek størrelsen
af den ved hvert gennemløb). Det får ikke siden til at fungere, men
det vil gøre fejlretningen lidt lettere.
Du kan også tjekke om værdien af messageID er den samme som i
sidste kørsel (gem messageID i en variabel og tjek den nye værdi
før du kalder funktionen).
--
Jens Gyldenkærne Clausen
Svar venligst under det du citerer, og citer kun det der er
nødvendigt for at forstå dit svar i sammenhængen. Se hvorfor og
hvordan på http://usenet.dk/netikette/citatteknik.html

Søg
Reklame
Statistik
Spørgsmål : 177560
Tips : 31968
Nyheder : 719565
Indlæg : 6408946
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste