Tom: Session mittels Session_ID beenden

Beitrag lesen

Hello,

Auf das Speichern in der DB kannst du ganz verzichten - speichere in der Session den Timestamp der letzten Aktion (also *jeder* Aktion), und prüfe beim nächsten Zugriff dann, ob dieser noch nicht mehr als eine Stunde in der Vergangenheit liegt.

Dann kann man aber nur die Sessions löschen, auf die nach 1h noch einmal zugegriffen wird, alle anderen bleiben als Leichen erhalten...

Genau, man kann von außen gar keine Sessions löschen, die regelmäßig bedeint werden. Es verfallen nur diejenigen nach der eingestanzten Zeit, die dann auch benutzt werden. Alle anderen verfallen erst, wenn der Aufräumprozess (zufällig) mal daran denkt, die Session-Dateien aufzuräumen.

Darum sollte man in vernünftig designten Systemen die Trägerschicht der Session immer von der logischen trennen. Der Aufräumprozess muss die Session-Dateien (das ist die Trägerschicht) auf jeden Fall solange in Ruhe lassen, wie die maximale Pausendauer in der logischen Schicht eingestellt ist.

Dann kann man in der logischen Schicht bequem entscheiden, wie lange eine Session maximal dauern darf, wie lange die Pausen sein dürfen, ob sie durch den Admin oder entsprechende Prozesse gezielt geschlossen werden soll. Und m,an kann die berühmte Frage "Wer ist online?" auch relativ einfach lösen (Für die Pedanten also genauer: wer hat innerhalb der letzten x Sekunden als angemeldeter Cleint einen Request abgesetzt?).

Man kann dann sehr viel einfacher auch die Rechte per Request regeln.

Es ist daher überhaupt nicht falsch, die Session-ID in der DB zu vermerken.

Liebe Grüße aus dem schönen Oberharz

Tom vom Berg

--
 ☻_
/▌
/ \ Nur selber lernen macht schlau
http://bergpost.annerschbarrich.de