Doppelter Skriptaufruf durch doppeltes request, wie verhindern?
Stefan Link
- php
Hallo Ihr freaks,
folgendes Problem: ein user schickt eine Anfrage per http-request, dieser ruft ein skript aus, das rechnet und schickt das ergebnis zurück. Soweit so schön. Nun aber kommt in Zeiten von hohen lasten es vor, dass der User nicht sofort sein Ergebnis bekommt, sondern ne Sekunde warten muss und dann manches mal 2 (3-4,...)Mal klickt. Dementsprechend rechnet das Skript auch 2 oder mehrere Male. Gibt es hier eine Möglichkeit, sowas zu unterbinden, also nur einfachanfragen bis zum Abarbeiten zuzulassen?
Wäre euch um jede Hilfe dankbar.
Gruß
Stefan
Hallo, Stefan!
clientseitig per javascript wiederholtes absenden unterbinden und serverseitig im rechenformular an den browser z.b. den unix-timestamp als variable mitschicken und in der session registrieren. beim ersten auswerten wieder aus der session löschen, das rechenergebnis in der session speichern und bei wiederholtem aufruf wegen dieses, nun fehlenden timestamps das ergebnis aus der session zusammen mit einer warnmeldung "bitte nur ein mal absenden!" ausgeben.
so in etwa würde ich das machen, vielleicht kommen ja noch bessere vorschläge.
freundl. Grüsse aus Berlin, Raik
Dankeschön! Dda sind doch schon 2 gute Ideen dabei :) Werde sehen, ob ich das hingebastelt bekomme.
Hallo Ihr freaks,
folgendes Problem: ein user schickt eine Anfrage per http-request, dieser ruft ein skript aus, das rechnet und schickt das ergebnis zurück. Soweit so schön. Nun aber kommt in Zeiten von hohen lasten es vor, dass der User nicht sofort sein Ergebnis bekommt, sondern ne Sekunde warten muss und dann manches mal 2 (3-4,...)Mal klickt. Dementsprechend rechnet das Skript auch 2 oder mehrere Male. Gibt es hier eine Möglichkeit, sowas zu unterbinden, also nur einfachanfragen bis zum Abarbeiten zuzulassen?
Wäre euch um jede Hilfe dankbar.
Gruß
Stefan
Hallo Stefan,
ich würde das mit einer Datei realisieren, in etwa so:
erstes Mal auf Seite
----> kreiere eine Datei "lock.txt" über PHP, perl, python, asp oder weiß der Geier.
auf anderen Modulen des Programms
---> lösche die Datei
zweites Mal auf der gleichen Seite
---> Da die Datei existiert, muss man schreiben: "Ein Reloaden dieser Seite ist verboten!" oder so.
Grüße,
Wolfram