mmofacts.com

Fremde Sessions auslesen

gepostet vor 18 Jahre, 4 Monate von Toby
Hallo,
ich würde gerne "fremde" Sessions auslesen können, um kurz vor dem Ablaufen stehende Sessions noch in der DB speichern zu können.
Die Sessions sollen aber weiter normal im Filesystem gespeichert werden, lediglich ein paar wenige Variablen werden permanent in der DB gespeichert (u.a. eben auch die Session-ID).
Die Sache ist, das der entsprechende User gar nicht mehr auf der Seite und seine Session gar nicht mehr initialisiert sein muss. Ich hab nur die Session-ID und keine offene Session.
Mir fallen dazu zwei Methoden ein, die ich beide nicht so gut finde:
a) Ich rufe ein anderes Script auf und übergebe dem als Get-Parameter die Sessionid.
Sehr hässliche Lösung, finde ich. Vor allem auch sicherheitstechnisch.
b) Ich lese die Sessiondatei direkt selber aus.
Finde ich auch nicht so toll.
Gibt es noch eine andere Methode?
Sprache ist übrigens PHP.
gepostet vor 18 Jahre, 4 Monate von knalli
1. Speichere die Session in der Datenbank (da Session, kann man HEAP in Mysql verwenden).
2. Dadurch kannst du die Inhalte auch verändern; solltest aber irgendwie eine Schnittstelle (aka Klasse oder so) bauen, damit du wirklich die Session richtig beschreibst.
Das einzige Problem, was mir dabei einfällt, wäre die Laufzeit:
a) Script des Users liest Session ein (aus DB)
b) Nebenläufig:
- besonderer Prozess schreibt Daten (in DB)
- Script des Users macht irgendwas
c) Script des Users schreibt Ergebnisse (in DB)
=> Konflikt
gepostet vor 18 Jahre, 4 Monate von Toby
Hm, das wollte ich eigentlich vermeiden.
Bzw. frage ich mich eben obs neben den Problemen die du schon skizziert hast es nicht auch noch möglicherweise ein Performance-Problem geben könnte? Ergo, ist es performanter die Sessions auf dem Filesystem zu belassen oder machts von dem Standpunkt her nichts aus, sie in die DB zu schieben?! (oder ist das wieder so eine 1000-xte Frage? *G*)
gepostet vor 18 Jahre, 4 Monate von knalli
Nun ja.. eine HEAP Tabelle legt die Daten im RAM ab, kannst dir also ausmalen, was unterm Strich ("DB Layer" muss man ja schon einkalkulieren) dabei rauskommt (im Vergleich zu Dateiem im FS). Abgesehen davon lässt sich eine Multiserverumgebung installieren, denn Sessions over NFS gehn auch, aber sind nicht soo ideal..
gepostet vor 18 Jahre, 4 Monate von Flint
Weiß ja nicht was du machen willst, wenn es "nur" um die Daten geht die du eh schon in der DB speicherst kannst du auch einfach einen Garbage Collector drüber laufen lassen der prüft welche Sessions abgelaufen sind und dann die gewünschten Aktionen ausführt. Brauchst dann natürlich nen Zeitstempel für den letzten zugriff auf die Session in der DB.
Allgemein würd ich mal session_set_save_handler anschauen, da gibts auch Beispiele für eigene Session Handler.
Da du schreibst das du eh schon einige Session Daten in einer DB speicherst wird sich bei der Performence vermutlich nicht alzuviel tun wenn du da noch ein paar Daten mehr mitführst.
gepostet vor 18 Jahre, 4 Monate von Toby
Die Daten die ich aktuell in der DB halte sind On-Way,d.h. sie werden nur reingeschrieben, aber nicht von der Session ausgelesen. Will damit nur feststellen, wer aktuell Online ist.
Danke für die Tipps, ich denke ich verlege die Session dann komplett in die DB und HEAP ist ja wirklich schön schnell.
ADODB bietet da dankenswerterweise schon was an.

Auf diese Diskussion antworten