19. august 2006 - 17:40Der er
11 kommentarer og 2 løsninger
Håndtering af 2 (eller flere) requests
Hej!
Jeg har et meget generelt spørgsmål, nemlig hvordan man håndterer 2 (eller flere) requests fra samme side, på en måde så serveren kun reagerer på ét af disse requests?
Jeg ved ikke, om der er en generisk løsning eller om det er anhængig af konteksten... Men hvis det sidste er tilfældet (eller blot for eksemplets skyld), så forstil jer en side, som ved request f.eks. sender en mail eller skriver ned i en database - og sender brugeren videre til en ny side. Hvis ellers hastigheden er top i helt, kan brugeren ikke nå at trykke mere end 1 gang, men det sker jo relativt tit, at der er nok forsinkelse til at det kan lade sig gøre...
I ovenstående eksempel vil der blive sendt 2 (eller flere) mails eller blive skrevet 2 (eller flere) gange i databasen, hvilket ikke er hensigtsmæssigt. Ja, nogle gange kan det ligefrem være fatalt.
sql = "SELECT [id] FROM [forum] WHERE [user] = '" & username & "' AND [message] = '" & message & "' AND [forumid] = " & forumid & " AND DATEDIFF('S',[date],NOW()) < 60" rs.open sql, connection if not rs.eof then rs.movenext end if do while not rs.eof connection.execute "DELETE FROM [forum] WHERE [id] = " & rs("id") loop
Umiddelbart er jeg mest til arne v's løsning, hvor jeg går ud fra, at beskrivelsen matcher "token pattern".
Da jeg altid er sulten efter at lære mere, så bider jeg mærke i, at der står "en måde" i kommentarer... Hvilke andre muligheder ser du?
Synes godt om
Slettet bruger
19. august 2006 - 18:57#5
Jeg hælder også mest til Arnes løsning..
At javascript låser formen er måske også en løsning. jeg har ikke prøvet det før - var lige noget jeg kom på - men du kan jo prøve dig frem.. det viser også brugeren at formen er blevet sendt..
Jeg beklager den lange respons-tid... Løsningen blev en anden end en af de skitserede - primært da der blev fundet en quick-fix løsning, som klarer problemet hurtigt og "godt nok". Og quick-fix var et must, da applikationen allerede var i drift og der ikke var afsat ressourcer til at lave andet end en meget hurtig løsning.
Kort fortalt får alle kontrols på alle sider, der poster siden, følgende JavaScript, som åbner et pop-up vindue med teksten "vent venligst...". Det gode i løsningen er, at den umuliggør klik på samtlige kontrols på én gang, men til gengæld forsvinder pop-up vinduet, når der bliver klikket på det blot én gang. Men det viste sig ikke at være noget problem i praksis.
Det script, der bliver indsat på hver controls onClick event var følgende:
Jeg har valgt at dele pointene lige mellem de to forslag, som vil komme med i værktøjskassen til en anden gang - og det passer også fint med de to, som har efterkommet opfordring om at smide et svar! :)
Synes godt om
Ny brugerNybegynder
Din løsning...
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.