Tom: vor dem verlassen der Seite Daten speichern

Beitrag lesen

Hello Basti,

ich hatte Dich also schon richtig verstanden.

Das Aufräumscript sucht permanent nach Buchungen, deren Status auf "pending" steht und deren letzter Ajax-Poll länger als 5 Minuten her ist und löscht diese.

Aber ein Aufräumscript benötigst Du dann nicht jedes Mal. Das reicht, wenn man das einmal am Tag laufen lässt.

Der Tisch ist eben "pending" solange er maximal darf (Aktueller_Timestamp - Timestamp_letzter_Buchungsschritt) oder bis die Buchung tatsächlich bestätigt wurde.

Und zusätzlich hast Du dann noch den Timestamp_Buchungsstart, um - wie Du es schon beschreibst - die Blockierer auszufiltern. Du bnötigst also zwei (drei) Timestamps für den User in der Datenbank (Datensatz ist über die Session unique indiziert):

  • Buchungsstart -> DB
  • TS letzter Request der Buchung -> DB, Zeit zwischen zwei Roundturns zb. 90 Sek)
  • TS aktuelle Zeit -> System
  • TS Buchungsbestätigung -> DB

und zwei Zeitbegrenzungen

  • Maximale Gesamtdauer für eine Buchung
  • Maximale Dauer zwischen zwei Buchungsschritten.

Die Einstellung session.gc_maxlifetime muss auf jeden Fall länger ssein, als die maximale Dauer zwischen zwei Buchungsschritten.

Wenn man die Zeiten passend wählt, ist Ajax also auch nicht unbedingt notwendig. Das belastet nur das Netz und den Server. Und wenn man genau überlegt, ist Ajax ja auch an eine Pollingrate gebunden. Mach die in Gedanken einfach mal etwas länger, dann bist Du schon beim "passiven Verfahhren" angekommen.

Durch passende Abfragen kannst Du normalerweise alles filtern, was Du brauchst.

Empfehlenswert ist dann noch ein Button "Verwerfen" im Formular, dass den Datensatz mit der laufenden Session ungültig macht (z.B. durch Eintrag eines bestimmten Textes+Timestamp in das Sessionfeld) udn dem user ggf. eine neue Sessionnummer gibt. Das spielt dann aber auch ins Anmeldesystem, falls Du feste User-Accounts hast.

Liebe Grüße aus dem schönen Oberharz

Tom vom Berg

--
 ☻_
/▌
/ \ Nur selber lernen macht schlau
http://bikers-lodge.com