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"
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.
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.
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.
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.
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..?
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
610 ms totalt · 4 externa anrop · v20260731065814-full.d34c6d5a