Forum > ASP > Generella frågor
Jag har ett problem med att en sida jag jobbar på går ner med jämna mellanrum då det blir flera användare på den.
Vet inte riktigt hur jag skall hitta felet.
Har aldrig några problem när man är ensam på sidan och snurrar runt. Fast ibland kan en sidhämtning ta flera sekunder, även upp emot 30sek.
Har fått en känsla av att jag kan ha problem med databasen. Typ att den blir överbelastad. Kanske problem med mina queries, eller att jag hanterar öppning och stängning av dbn på ett felaktigt sätt.
Någon här som kan hjälpa mig att fnurla ut problemet? Eller har förslag på hur man kan felsöka?
tacksam för hjälp!
Vilken databas kör du mot?
Det är mysql 5.0.
Jag gör så att jag har en include fil med connect.open-strängen i början av varje sida.
Sen i slutet har jag en include med connect.close.
Men servern läser väl alltid hela filen varje gång, så att den stänger. Hur är det om man har en response.redirect. Sidan läses väl helt ändå så det stängs?
Stäng alla databas kopplingar när du är färdig med dom, om du kör en redirect innan du har stängd din databas connection så har du den anslutningen kvar.
Optimera dina SQL frågor, skriv smartare recordset.
Du kommer inte med mycket mer kod exempel så det är vad du behöver göra.
Så här ser min connect.open ut, som är i början.:
Set Connect = Server.CreateObject("ADODB.Connection")
Connect.open "Driver={MySQL ODBC 5.1 Driver};Server=localhost;charset=UTF8;Database=XXX;User=XXX; Password=XXX; Option=3;"
Min connect.close, som är i slutet av varje sida.
connect.close
Set connect = nothing
Sen har jag diverse sådana här igenom hela sidan:
strSQL = "SELECT * FROM game_region_code WHERE pGID ="& gID &" AND pCIB = "& gCIB &" AND pCode = '"& gCode &"'"
set rs = connect.execute(strSQL)
Så om jag förstår dig rätt, så borde jag ha en connect.open före alla förfrågningar och en connect.close när dom är klara?
Men när det är en förfrågning innuti en annan, så borde inte behövas eller?
Typ så här.
strSQL = "SELECT * FROM game_region_code WHERE pGID ="& gID &" AND pCIB = "& gCIB &" AND pCode = '"& gCode &"'"
set rs = connect.execute(strSQL)
IF rs.eof THEN
connect.execute("INSERT INTO game_region_code SET pGID = '" & gID &"', pCIB = '" & gCIB &"', pCode = '" & gCode &"', pActive = 1")
doneWhat = "1"
response.redirect request.servervariables("http_referer")
ELSE
doneWhat = "2"
response.redirect "?done=" &doneWhat
END IF
Men att jag borde göra en connect.close innan jag kör redirect?
Sry, om ni måste vara väldigt tydliga med mig. Jag har absolut ingen utbildning inom detta. Jag kör lite "Learn by Doing", med stort inslag av "Try and Error" :/
I din kod som du skriver, så stänger du aldrig ditt connection objekt:
connect.execute("INSERT INTO game_region_code SET pGID = '" & gID &"', pCIB = '" & gCIB &"', pCode = '" & gCode &"', pActive = 1")
doneWhat = "1"
response.redirect request.servervariables("http_referer")strSQL = "SELECT 1 FROM game_region_code WHERE pGID ="& gID &" AND pCIB = "& gCIB &" AND pCode = '"& gCode &"'"
set rs = connect.execute(strSQL)
dim sRedirect
sRedirect = request.servervariables("http_referer") ' Default Redirect
If rs.eof Then
connect.execute("INSERT INTO game_region_code SET pGID = '" & gID &"', pCIB = '" & gCIB &"', pCode = '" & gCode &"', pActive = 1")
Else
sRedirect = "?done=2"
End If
Connect.Close
Set Connect = Nothing
Response.Redirect(sRedirect)