Jag har ett litet problem med en asp grej... om jag stresstestar en sida där man kan ta bort artiklar. Klickar en massa gånger på "ta bort knappen" så uppdateras ett sessions värde samt en SQL-fråga exekveras varje gång jag klickar ta bort medan vissa SQL-frågor inte exekveras vilket gör att det blir lite fel, fungerar bara när jag klickar lungt (väntar tills sidan har laddats klart mellan gångerna).
Frågan som exekveras ligger sist på sidan och uppdateringen av sessionet sker där oxå.
Övriga frågor som inte exekveras ligger först på sidan.
Skulle vilja att antingen inget eller allt togs bort...
Det jag gör är att klickar på en länk som går till samma sida och skickar med parametrar som gör att ett några värde tas bort i en MS SQL 7 databas samt uppdaterar ett session...
Detta är i början av sidan:
If Request.QueryString("strAct") = "delete" Then
deleteDone = "no"
strSQL = "DELETE FROM tblProductType_prt WHERE intId_orp = "& Request.QueryString("intId") &""
objConn.Execute(strSQL)
strSQL = "DELETE FROM tblOrderProduct_orp WHERE intId = "& Request.QueryString("intId") &""
objConn.Execute(strSQL)
deleteDone = "yes"
End If
Och detta har jag lagt i slutet av sidan:
If deleteDone = "yes" Then
strSQL = "UPDATE tblUser_usr SET intPoints = intPoints + "& Request.QueryString("intPrice") &" WHERE tblUser_usr.intId = "& Session("intId_usr") &""
objConn.Execute strSQL
Session("intPoints_usr") = Session("intPoints_usr") + Request.QueryString("intPrice")
Session("test") = "yes"
%\>
\<script language="JavaScript"\>
parent.cart.location.reload()
\</script\>
\<%
deleteDone = "no"
End If
sug på den
tacksam för hjälp
/Martin
emissionMedlem sedan dec. 19996 721 inlägg Huruvida sidan laddas helt bör inte spela någon roll, men du kan börja med lite optimering....
If Request.QueryString("strAct") = "delete" Then
strSQL = "DELETE FROM tblProductType_prt WHERE intId_orp = "& Request.QueryString("intId") & ";DELETE FROM tblOrderProduct_orp WHERE intId = " & Request.QueryString("intId")
objConn.Execute strSQL,,128
deleteDone = true
End If
If deleteDone Then
strSQL = "UPDATE tblUser_usr SET intPoints = intPoints + "& Request.QueryString("intPrice") &" WHERE tblUser_usr.intId = "& Session("intId_usr")
objConn.Execute strSQL,,128
Session("intPoints_usr") = Session("intPoints_usr") + Request.QueryString("intPrice")
Session("test") = "yes"
%>
<script language="JavaScript">
parent.cart.location.reload()
</script>
<%
deleteDone = false '????
End If
Har tagit bort onödiga & ""-slut på strängar, slagit ihop SQL-satser och lagt till adExecuteNoRecords-växeln till Execute, så att inga recordset prepareras.
tackar för tipset om optimeringen men det löste inte mitt problem. Fortfarande samma problem.
Har klurat på en alternativ lösning som nog skulle fungera men jag hatar när jag inte hittar en logisk lösning på problemet.
Fortfarande väldigt tacksam om någon skulle kunna komma med en förklaring. Säg till om jag skall förklar bättre. /Martin
ToonsterMedlem sedan feb. 20001 590 inlägg Kör du stresstestet från samma dator?
Det kan ge mycket felvisande värden.
Sedan undrar jag lite hur tabellernas relationer ser ut, för man kan ja ange referensintegritet, så att kopplade poster automatiskt tas bort. Detta både snabbar upp och förenklar.
/T
Stresstest sker inte från samma dator.
Har bifogat en bild på relationerna mellan de tabeller som är inblandade. Den mest intressanta är den mellan tablellerna tblOrderProduct_orp och tblProductType_prt som är en "en till många relation"
Det låter intressant attt kunna ta bort kopplade poster automatiskt. Det kallas väl cascading delete om jag inte är ute och cyklar helt. Fungerar detta i MS SQL Server 7 är det inte bara i 2000? I så fall hur.
/Martin
ToonsterMedlem sedan feb. 20001 590 inlägg Klickar en massa gånger? innebär det att du i en webbläsare klickar på en länk?
Då kommer ju scripten automatsikt att sluta exekveras vid varje klick. Varje gång man klickar på en länk, så sker en ny förfrågan, och de gamla avbryts.
Databasoperationerna körs vid sidan om av databasen, inte IIS, och kan behöva extra tid. Därför så kan det bli fel vid databasuppdateringar mm.
Så kan du ju inte stresstesta!
Du måste ange filnamnet på scriptet du ska testa med eventuella argument i stresstestprogrammet. Det skapar flera samtidiga förfrågningar.
/T
jag stresstestar inte med något program utan klickar bara flera ggr som du beskrev det... men det jag inte förstår är varför de exekveringar mot databasen som ligger sist i koden exikveras medan de som ligger först inte exekveras..?
emissionMedlem sedan dec. 19996 721 inlägg Det kan bara bero på att något är felkodat. Ge oss hela koden, så hittar vi nog felet.
missat och kolla på svaren på ett tag... har dock valt en annan lösning som fungerar men ej löst det första problemet... har inte kvar den gamla koden som ej fungerade korrekt men jag skall försöka återskapa den så att ni kan hjälpa mig att bli lite klokare. i'll be back ;)