| 

.NET C# Java Javascript Exception

5
Mit hilfe des Python Frameworks Pylons (Session Klasse) verwaltet mein Script die Sessions der User. Nun würde ich aber gerne sehen welche User eingeloggt sind und wie viele aktive Sessions zu einem User existieren.

Hat jemand eine idee wie ich an die Informationen der aktiven Session kommen kann?
News:
03.03.2011
FX 392 8
Auf die Beantwortung dieser Frage war ein Kopfgeld in Höhe von 50 Reputationspunkten ausgesetzt. Das Kopfgeld wurde bereits vergeben.
1 Antwort
4
Pylons nutzt Beaker zur Session-Verwaltung. Du kannst ein Verzeichnis angeben, in dem die Session-Daten gesichert werden sollen.
Dies kannst Du dann wiederum auslesen und so auf 'fremde' Sessions zugreifen.

Ob Beaker von Haus aus so etwas anbietet kann ich leider nicht sagen ;)
08.03.2011
DaSpors 4,1k 1 8
Vielen Dank! Das Verzeichnis nutze ich schon nur leider sind dort alle Sessions in verschiedenen Ordnern etc gespeichert. Hast du eine Idee wie ich daraus eine Liste erzeugen kann?
FX 08.03.2011
1
Soweit ich weiss hast Du doch einen kompletten Python Interpreter zur Verfügung, also sollteein os.walk funktionieren: http://docs.python.org/library/os.html#os.walk
DaSpors 08.03.2011
1
Ach so: Ich denke Beaker legt pro Session eine Datei an
DaSpors 08.03.2011
Pro Session wird eine Datei angelegt und in einen anderen Unterordner(..\sessions\container_file\3\33\) gespeichert. In der untersten Ebene befinden sich Dateien wie 333csad7a35028edc1er3886f80f6473.cache welche aber auf Grund des Alters nicht auf aktive Sessions schließen lassen.
FX 08.03.2011
1
Hast Du ein eigenes Verzeichnis für den Session-Cache?
http://pylonshq.com/docs/en/0.9.7/sessions/#data-dir

Wie speichert Beaker die Sessions?
http://pylonshq.com/docs/en/0.9.7/sessions/#type

Wenn eigenes data_dir und type=dbm sollte das alter der *.dbm files Aufschluss über Aktivität geben.
http://www.openvest.com/trac/wiki/BeakerCache
DaSpors 09.03.2011
1
Vielen Dank für deine Hilfe. Es Funktioniert jetzt halb. Anhand des Timestamps kann ich die letzte Aktivität des Users rauslesen. Im Cache File selber finde ich den Usernamen und die Loginzeit. Das Problem sind nun aber die Totensessions. Läuft eine Session auf einen Timeout oder der Anwender schließt seinen Browser ist die Session noch weiter im Cache und somit bei mir auch als aktiv angezeigt. Somit kann es sein das eine Session bei mir als "aktiv" angezeigt wird obwohl diese gar nicht mehr benutzt werden kann.
FX 10.03.2011
1
Grundsätzlich muss ein Cleanup stattfinden...ich meine gelesen zu haben, dass Beaker den Cache nicht von sich aus aufräumt, aber ich kann mich irren. Wie lange eine Session valid ist kannst Du hiermit bestimmen http://pylonshq.com/docs/en/0.9.7/sessions/#timeout
Denselben Wert würde ich als max-age für den Timestamp der session files verwenden.
100%ige online detection geht über sessions eh nicht, dazu müsstest Du AJAX und onclose events bemühen.
DaSpors 10.03.2011
1
Die Bereinigung des Session Verzeichnisses lässt sich einfach über die Konsole erledigen. Einfach in das Session Verzeichnis wechseln und folgenden Befehl ausführen.

find . -mtime +3 -exec rm {} \;
FX 19.05.2011

Stelle deine Framework-Frage jetzt!