Jeg er kontaktet af min udbyder, som mener jeg ikke lukker mine connections korrekt og det belaster serverne.
jeg har i toppen af alle mine sider, hvor jeg åbner databasen, og i slutningen af siderne lukker jeg med conn.close set conn = nothing.
Ligeledes når jeg åbner op for mine tabeller, lukker jeg med rs.close set rs = nothing
Dette er vel korrekt..?
Jeg kommer så bare til at tænke på, er det OK at åbne til databasen i toppen, og lukke igen i bunden..
her tænker jeg på, hvis jeg eks har en Response.Redirect "default.asp" midt på en side, så når den vel aldrig ned i bunden og får lukket min conn igen?
I så fald, hvordan bør jeg så håndtere.. skal jeg åbne for conn hver gang jeg også åbner med rs, eller hvordan gør jeg det bedst?
Det er noget der bliver diskutereret engang i mellem..
Skal man benytte sig af 1 forbindelse (dvs, ikke lukke)? Skal man åbne og lukke med det samme?
Personligt åbner jeg så tæt på koden, der faktisk bruger databasen, og lukker snarest muligt..
Hvis jeg skal bruge databasen flere steder på siden, betyder det er jeg opretter og nedlægger forbindelsen flere gange.. Det er vist lidt overflødigt, hvis man skal genbruge forbindelsen.. Men sådan gør jeg normalt..
Jeg har faktisk lavet nogle funktioner, som jeg kalder, når jeg skal bruge databasen.. funktionerne smider jeg i en fil, som jeg indkluderer på de sider, der brugre databasen..
Eksempel:
dbfil.asp: function open ...åben forbindelse til databasen... end function
function close ...luk forbindelsen... end function
og inkluderingen: <!-- include file="dbfil.asp" -->
Kunne være jeg skulle forsøge med det, for når mit site gang på gang ligger database serveren ned, må der være noget galt et sted..
Det undrer mig bare det går så galt, når jeg netop er obs på at alt hvad jeg åbner, det lukkes igen.. og har tjekket samtlige åbninger, og altlukkes igen..
Kan der være andre faktorer som gør at det går galt..?
du skal lukke så snart du har udtrukket og udskrevet dit recordset,
at åbne og lukke flere gange, kræver mindre, da serveren automatisk holder forbindelsen i en cache i et stykke tid, og genbruger denne forbindelse hvis der spørges på den samme igen indenfor kort tid (ved ikke eksakt minutter)
Jeg har forsøgt med Function ConnOpen Set conn = Server.CreateObject("ADODB.Connection") conn.Open "Driver={MySQL ODBC 3.51 Driver};Server="& SQLserveradr &";Database="& SQLdatabase &";Option=3;User="& SQLlogin &";Password="& SQLpassword & ";" end function
Function ConnClose conn.close set conn = nothing end function
Og inden jeg åbner et recordset, laver jeg
ConnOpen set rs = ... rs.Close set rs = nothing og slutter med ConnClose
MEN, mit recordset giver fejl og siger at der ikke er åbnet til databasen, er min function ikke korrekt?
Du får sikkert fejlen, fordi "conn" bruges lokalt, inde i dine functions.. En funktion er et scope, hvilket betyder at variabler der defineres/bruges i selve funktionen, kun kan tilgås fra inde i funktionen.
Du kan løse problemet, ved at dimme "conn" uden for...
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.