webForumDet fria alternativet

Servern går långsammare och långsammare pga kod?

ASP

3 svar · 149 visningar · startad av emil

Medlem sedan apr. 2000106 inlägg
Frågan#1

Har en asp sida som körs på ett intranet. Problemet är att servern blir slöare och slöare på att hämta information på sidorn som har databaskopplingar och till slut kommer det upp felmeddelande på intranetservern att maximalt antalt kopplingar / inloggningar har skett.
Följande koder anser jag att det finns risk för att de kan orsaka problemet men jag har inte förstått mig på ännu hur man skall komma till rätta med problemet. Vore mycket tacksam för hjälp!

-
[ På första sidan man kommer till ]
<%
if NOT Request.ServerVariables("LOGON_USER")="" THEN Set MyConn = Server.CreateObject("ADODB.Connection") MyConn.Open "FILEDSN=users.dsn" SQLstmt = "SELECT * FROM users where userID like '%"&Request.ServerVariables("LOGON_USER")&"%'"
Set rs = MyConn.Execute(SQLstmt)
if NOT rs.EOF then s=rs("namn")
if s=""
then s=Request.ServerVariables("LOGON_USER")
%>

<%=s&", "%>
<%
ELSE
'Response.Write("Ingen nätverkskoppling<BR><BR>")
END IF%>
<%'=Request.ServerVariables("HTTP_USER_AGENT")%>

[ Eller kod på sidan som hämtar information från fildns och som laddas långsammare och långsammare ju längre tid det går från att man rebootade servern ]

<%
set order=MyConn.Execute("Select FieldName from tblAnställdWrap where OrderPrio='1'")
Set rswrap = MyConn.Execute("Select FieldName from tblAnställdWrap order by orderprio")
Set rswrapkey = MyConn.Execute("Select FieldName from tblAnställdWrap where Key='x'")
IF Request.QueryString("visa")="1" then

ELSE
SQLstmt="Select * from tblAnställd order by "
if Request.QueryString("a")="avd" then SQLstmt=SQLstmt&" Avdelning, "
SQLstmt=SQLstmt&rswrap(0)
rswrap.movenext
SQLstmt=SQLstmt&","&rswrap(0)
rswrap.movefirst
End if
if (not request.Form("fritext")="") then
SQLstmt = "select * from tblanställd where efternamn like '%" & Request.Form("fritext") & "%' or fornamn like '%" & Request.Form("fritext") & "%' order by Efternamn"

end if

%>
<%
row=0
i=0
j=0
'response.write SQLstmt
Set rs = MyConn.Execute(SQLstmt)

IF instr(lcase(Request.ServerVariables("LOGON_USER")),"emil") THEN
Set rswrap = MyConn.Execute("Select * from tblAnställdWrap where visaLista<'9' order by visaLista")
else
Set rswrap = MyConn.Execute("Select * from tblAnställdWrap where visaLista<'8' order by visaLista")
end if
rswrap.movenext
%>
<table border="0" cellspacing=0>
<tr bgcolor="#EFE9EF"><td></td>
<%while not rswrap.eof%>
<td><b><%=rswrap("Label")%>&nbsp&nbsp</b><br><br></td>
<%rswrap.moveNext
wend%>
<td><b></b><br><br></td><td></td></tr></b>
<tr><br></tr>
<%
IF NOT rs.EOF then
WHILE NOT rs.EOF
i=i+1
j=j+1
if i=1 then
color="#CFD8FF"
end if
if i=2 then
color="#FFFFFF"
i=0
end if
rswrap.moveFirst
%>
<tr bgcolor="<%=color%>"><td>
<a href="uppdatera1.asp?id=<%=rs(""&rswrap("FieldName"))%>"
onMouseOver="if (i) x1<%=j%>.src = im2.src;"
onMouseOut="if (i) x1<%=j%>.src = im1.src;">
<IMG SRC="images/uppdatera.gif" ALT="" WIDTH="60" HEIGHT="20" BORDER="0" NAME=x1<%=j%>></a>
</td>
<%rswrap.moveNext
while not rswrap.eof%>
<td><font size="-2">
<%if instr(lcase(rswrap("FieldName")),"mail") then Response.Write("<a href='mailto:")%>
<%=rs(""&rswrap("FieldName"))%>
<%if instr(lcase(rswrap("FieldName")),"mail") then Response.Write("'>Maila</a>")%>
&nbsp&nbsp</td>
<%rswrap.moveNext
wend%>

  \<%    
      rs.MoveNext
      
    WEND
	rs.close
	rswrap.close
	rswrapkey.close    
ELSE
%\>\<CENTER\>\<H3\>Inga träffar\</H3\>\</CENTER\>

<%END IF

%>

----------------
Förstår alltså inte vad det r som gör att servern belastas mer och mer och till slut blir överbelastad och måste bootas om...
Som sagt väldigt tacksam för hjälp
Mvh Emil

Medlem sedan mars 20002 836 inlägg
#2

Du har glömt att stänga databasen.

Du bör ha detta när ingen databas kontakt behövs mer:

MyConn.Close
Set myConn = Nothing

Hoppas att det hjälper,

cya

------------------
Private Function OutPut(ByRef sString)
OutPut = "Who gives ..." & sString
End Function

Medlem sedan apr. 2000106 inlägg
#3

Okej tack för hjälpen.
Om jag förstått dig rätt så kommer det att jag om inte har med din kod att startas massa databaskopplingar och sen om man tex stänger iexplorer och sen går in på sidan igen så öppnar man en ny koppling igen samtidigt som de gamla man gjort också ligger kvar och " skräpar " på intranetservern?
Korrekt uppfattat av mig eller?
Tackar annars så himla mycket för ditt snabba svar!
Mvh Emil

Medlem sedan mars 20002 836 inlägg
#4

jepp, rätt fattat.

cya,

------------------
Private Function OutPut(ByRef sString)
OutPut = "Who gives ..." & sString
End Function

258 ms totalt · 4 externa anrop · v20260731065814-full.86ec41c2
121 ms — deklarationer (db)
0 ms — hämta statistik (cache)
127 ms — hämta tråd, inlägg och bilagor (db)
125 ms — ändringar (db)