webForumDet fria alternativet

Databaskoppling mot MySQL i funktion

ASP

7 svar · 774 visningar · startad av MickeA.com

Medlem sedan feb. 20034 441 inlägg
Frågan#1

Tjena
Jag håller på och gör om en mycket stor sida som i dagsläget jobbar mot Access, till MySQL.
Jag har lagt databaskopplingen i en "funcs.asp" fil som inkluderas på sidorna.
Såhär ser det ut:

'
'-------------------------------------------------------------------------------------------
' Initiera Databasanslutning
'-------------------------------------------------------------------------------------------
Public Sub open_db()
	Set oConn = Server.CreateObject("ADODB.Connection")
	oConn.Open("Driver={MySQL ODBC 3.51 Driver};Server=domänet.se;Port=3307;Database=min_databas;User=anv.namn;Password=mitt_passwd;Option=3;")
End Sub
'
'-------------------------------------------------------------------------------------------
' Avsluta Databasanslutning
'-------------------------------------------------------------------------------------------
Public Sub close_db()
	oConn.close
	Set oConn = Nothing
End Sub
'-------------------------------------------------------------------------------------------

Högst upp på undersidorna kör jag:

Dim oConn :  Call open_db()

och längst ner:

Call close_db()

Detta funkade kanonbra från början, men sen har det börjat strula till sig ordentligt.
IIS gör timeout hela tiden och säger "För många anslutna användare".
Det spelar ingen roll om jag startar om IIS, får samma direkt efter iaf.

Så nu tänkte jag höra vad jag gjort för fel, är det så att mina funktioner på något sätt "felar" så att anslutningen mot MySQL ligger öppen hela tiden?

Hur ska jag göra?

Tack!

Medlem sedan feb. 20034 441 inlägg
#2

Tjena
Nu är problemet "halvlöst".
Felet verkar ligga i min funktion Call close_db(), för det verkar inte som om kopplingen stängs, utan ligger kvar, trots att nya skapas hela tiden.
Nu tog jag bort HTTP Keep-Alive i IIS och bytta ut Call close_db() mot oConn.Close : Set oConn = Nothing

Nu verkar det som om kopplingen stängs, men varför?
Det är ju precis samma kod, bara att den ligger utanför funktionen.

/r
Hittade den här länken när jag sökte här på wF:
http://www.shiningstar.net/articles/articles/database/datafunctions.asp?ID=AW
Hur ser koden ut som ska ligga i global.asa?

Medlem sedan feb. 20034 441 inlägg
#3

Hmm, det blir ingen skillnad vad jag än gör verkar det som...
Liksom igår så funkar det tills jag kommer till "kontakta-sidan", då blir det toksegt, browsern gör timeout och 403 => För många samtida anslutningar....

Nu stänger jag oConn på VARJE undersida, ändå blir det såhär.
I filen contact.asp finns inget "konstigt" heller, några olika textstycken som hämtas från en och samma funktion, inget märkvärdigt.

Går det att kolla någonstans vad och hur många typ anslutningar som ligger bakom, med script eller någonstans i IIS.

Håller på och bli tokig på det här, måste lösas.
Tacksam för alla tips!

Medlem sedan feb. 20034 441 inlägg
#4

Nu _tror_ jag att jag kommit fram till vad problemet beror på.
Jag använder en class för "forumkod" som jag hittat här på wF.

Har använt den på flera sajter, men av någon anledning har den helt plötsligt strula.
Tar jag bort min <--#include ... --> för den så funkar nämligen sajten igen som den ska.

Någon som kanske vet vad det kan bero på?
Har testat sidan på dels min egen dator med WinXP SP2 med IIS 5.1 och även en Win 2003 Server Enterprise Edition som jag har tillgång till, med exakt samma resultat på bägge.

Bifogar classen här om någon har nytta av den.
Vad kan det bero på`?

Medlem sedan feb. 20034 441 inlägg
#5

Ingen som har nån aning om vad jag ska göra?
Det verkar alltså som om de objekt jag öppnar inte stängs ordentligt.
Det är sidan "Kontakta" som strular till det, sidan funkar kanon fram tills att jag går in på den sidan, då blir allt trögt som attan och sidan gör timeout ända tills jag startar om IIS.
Här är min kod:

<!--#include file="css/funcs.asp"-->
<!--#include file="css/w3_parser.asp"-->
<%
'---------------
' DBMS-INST.
'--------------------------------------------------
Set oConn = Server.CreateObject("ADODB.Connection")
oConn.Open(dbms)
'--------------------------------------------------
%>
<table cellpadding="0" cellspacing="0" style="width: 395px;">
<tr>
<td class="bTxt" style="padding-bottom: 15px; font-size: 11pt; vertical-align: top;"><b>Adress:</b></td>
<td class="bTxt" style="padding-bottom: 15px; width: 290px;">
<%
sSql =	"SELECT " &_
	"tText " &_
	"FROM tbl_content " &_
	"WHERE tSite = 'pCon_Addr' " &_
	"LIMIT 1"
Set rs = oConn.Execute(sSql)
If Not rs.EOF Then
	Response.Write(wfParser.Parse(rs("tText")))
End If
rs.Close : Set rs = Nothing
%>
</td>
</tr>
<tr>
<td class="bTxt" style="padding-bottom: 7px; font-size: 11pt;"><b>Besöksadress:</b></td>
<td class="bTxt" style="padding-bottom: 7px; width: 290px;">
<%
sSql =	"SELECT " &_
	"tText " &_
	"FROM tbl_content " &_
	"WHERE tSite = 'pCon_PG' " &_
	"LIMIT 1"
Set rs = oConn.Execute(sSql)
If Not rs.EOF Then
	Response.Write(wfParser.Parse(rs("tText")))
End If
rs.Close : Set rs = Nothing
%>
</td>
</tr>
<tr>
<td class="bTxt" style="padding-bottom: 7px; font-size: 11pt;"><b>Bankgiro:</b></td>
<td class="bTxt" style="padding-bottom: 7px; width: 290px;">
<%
sSql =	"SELECT " &_
	"tText " &_
	"FROM tbl_content " &_
	"WHERE tSite = 'pCon_BG' " &_
	"LIMIT 1"
Set rs = oConn.Execute(sSql)
If Not rs.EOF Then
	Response.Write(wfParser.Parse(rs("tText")))
End If
rs.Close : Set rs = Nothing
%>
</td>
</tr>
<tr>
<td class="bTxt" style="padding-bottom: 7px; font-size: 11pt;"><b>Telefon:</b></td>
<td class="bTxt" style="padding-bottom: 7px; width: 290px;">
<%
sSql =	"SELECT " &_
	"tText " &_
	"FROM tbl_content " &_
	"WHERE tSite = 'pCon_Tele' " &_
	"LIMIT 1"
Set rs = oConn.Execute(sSql)
If Not rs.EOF Then
	Response.Write(wfParser.Parse(rs("tText")))
End If
rs.Close : Set rs = Nothing
%>
</td>
</tr>
<tr>
<td colspan="2" class="bTxt" style="padding-bottom: 5px; font-size: 11pt; vertical-align: top;"><b>Telefontider:</b></td>
</tr>
<tr>
<td colspan="2" class="bTxt" style="padding-bottom: 25px; width: 300px;">
<%
sSql =	"SELECT " &_
	"tText " &_
	"FROM tbl_content " &_
	"WHERE tSite = 'pCon_TeleTime' " &_
	"LIMIT 1"
Set rs = oConn.Execute(sSql)
If Not rs.EOF Then
	Response.Write(wfParser.Parse(rs("tText")))
End If
rs.Close : Set rs = Nothing
%>
</td>
</tr>
<tr>
<td class="dLine" colspan="2" style="padding-bottom: 5px;"><img src="pics/spacer.gif" style="border: 0px;" alt="Streckad Linje"></td>
</tr>
<tr>
<td colspan="2" class="bTxt" style="text-align: left; font-size: 11pt; padding-left: 2px; padding-bottom: 2px; padding-top: 0px;">
	<b>Hitta hit:</b>
</td>
</tr>
<tr>
<td colspan="2" class="bTxt" style="text-align: left; font-size: 11pt; padding-left: 2px; padding-bottom: 2px; padding-top: 0px;">
<%
sSql =	"SELECT " &_
	"tText " &_
	"FROM tbl_content " &_
	"WHERE tSite = 'Find_Us' " &_
	"LIMIT 1"
Set rs = oConn.Execute(sSql)
If Not rs.EOF Then
	Response.Write(wfParser.Parse(rs("tText")))
End If
rs.Close : Set rs = Nothing
%>
</td>
</tr>
<tr>
<td class="dLine" colspan="2"><img src="pics/spacer.gif" style="border: 0px;" alt="Streckad Linje"></td>
</tr>
<%
oConn.Close : Set oConn = Nothing
Set wfParser = Nothing
%>

Nu kör jag ju objekten rs och wfParser flera gånger efter varandra, men jag stänger föregående innan jag öppnar nästa, så jag fattar inte riktigt vad som ska till för att det ska funka.

Förslag?

Medlem sedan dec. 19996 721 inlägg
#6

Läs ut alla värdena i en fråga

SELECT tText,tSite FROM tbl_content WHERE tSite IN ('pCon_Addr','pCon_PG','pCon_BG','pCon_Tele','pCon_TeleTime','Find_Us')

Fyll på ett dictionary

set dict=Server.CreateObject("Scripting.Dictionary")
do until rs.eof
   dict.add cstr(rs("tSite")),cstr(rs("tText"))
rs.movenext : loop

och använd dictionaryt i stället

If dict.Exists("pCon_TeleTime") Then
	Response.Write(wfParser.Parse(dict("pCon_TeleTime")))
End If
Medlem sedan feb. 20034 441 inlägg
#7

Ah, det där kanske kan vara något.
Ska kolla lite mer på det, tack!

Medlem sedan feb. 20034 441 inlägg
#8

Nä, det måste vara något annat fel i min fil, för det funkar till en början, men så småningom så hänger sig hela sajten, bara när man besökar "contact.asp", skitkonstigt.

Jag hittar inga fel i filen, men jag bifogar den här, så om någon har lust att kolla igenom den vore ingen gladare än jag.

Tack på förhand!

397 ms totalt · 4 externa anrop · v20260731065814-full.a51de22e
128 ms — deklarationer (db)
127 ms — hämta statistik (db)
135 ms — hämta tråd, inlägg och bilagor (db)
132 ms — ändringar (db)