Panelen



Forumnavigering
Senast inloggade
RSS
Sponsorer

Forum > ASP > Generella frågor

Problem med sida som går ner.

sumpen
sumpen

Gradering

#19753

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!

ID: #19753 | Skapades: 2010-05-16 01:10:36 | Tråden har 5 svar och har lästs 297 gånger.

Roosweb
Roosweb

Gradering

#19754

Vilken databas kör du mot?

Med Vänliga Hälsningar - Robert Roos - Roosweb.se
ID: #19754 | Skapades: 2010-05-16 01:24:26

sumpen
sumpen

Gradering

#19755

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?

ID: #19755 | Skapades: 2010-05-16 10:39:47

voigtan
voigtan

Gradering

#19757

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.

Hur man ställer en fråga: http://support.microsoft.com/kb/q555375
ID: #19757 | Skapades: 2010-05-16 12:06:13

sumpen
sumpen

Gradering

#19761

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" :/

Taggar: mysql,
ID: #19761 | Skapades: 2010-05-17 08:51:15

voigtan
voigtan

Gradering

#19762

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")
Där kör du bara en insert och sen skickar du användaren vidare. Ja, du bör stänga dina connection kopplingar innan du skickar användaren vidare, öppnar din databas när du behöver den, stäng den när du inte behöver den, simple as that
Sen är det tyvärr rätt korkat att köra SELECT * När du:
Använder inge ditt recordset alls, du bryr dig inte om vad då få ut, bara att den inte är EOF, tänk om det är 200 fält i din databas, så är det 200 fält du aldrig bry dig om, ändå hämtar du dom.

Om jag utgå ifrån din kod så hade jag skrivit om den till:
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)
Hur man ställer en fråga: http://support.microsoft.com/kb/q555375
Redigerades av voigtan den 17 maj 2010. Läs tidigare inlägg.
Redigerades av voigtan den 17 maj 2010. Läs tidigare inlägg.
ID: #19762 | Skapades: 2010-05-17 11:50:14
© Copyright 2007-2009 Shadi Domat | Version 3.0 | Sidkarta | Policy