phpbar.de logo

Mailinglisten-Archive

[php] phplib / active_sessions

[php] phplib / active_sessions

Johann-Peter Hartmann Hartmann_(at)_freecharts.de
Mon, 24 Jul 2000 14:02:28 +0200


Hallo Iliver, Liste,

Oliver Eberlein schrieb:
> Sollen die Einträge in der "active_sessions" nach Ablauf einer
> Session gelöscht werden ? Ich meine, geht das automatisch ?
> Bei mir jedenfalls sind immer noch alle Session in der Tabelle.
> Verwirrt mich ein wenig...

	Der Zeitpunkt "nach Ablauf einer Session" ist
	nicht richtig bestimmbar, weil der Server nicht wissen
	kann, ob der Nutzer nur gerade eine Pause macht, oder
	vielleicht schon längst auf dem Fahrrad sitzt .

	Die phplib nutzt, um den Zustand "die Session ist
	noch aktiv" festzustellen, einen Timeout.

	Dieser Timeout kann an zwei Stellen überprüft werden :

	1. Wenn auf die Session zugegriffen wird

	Wenn der Timeout überschritten wurde wird die Session
	deaktiviert und der Nutzer muss sich z.B. neu einloggen


	2. Wenn auf die Session nicht mehr zugegriffen wird

	In diesem Fall kann sich die Session nicht mehr
	selbst darum kümmern, sich zu deaktivieren .
	Also muss im Rahmen einer anderen Session nachgeschaut
	werden, ob noch alte Sessions da sind.

	In der phplib kümmern sich die Parameter "gc_time"
	und "gc_probability" darum .
	"gc_time" setzt den Zeitraum, nachdem eine Session
	gelöscht werden darf .
	"gc_probability" setzt die Wahrscheinlichkeit,
	dass die _g_arbage _c_ollection durchgeführt wird.

	Bei jedem Zugriff auf eine Seite, die Sessions benutzt ,
	wird gewürfelt, ob man eine Garbagecollection macht.
	"if ((rand()%100) < $this->gc_probability) " .
	Diese Würfelei erzeugt langfristig einen Anteil von
	z.B. 5 % ( wenn dies der Wert von gc_propability ist )
	Garbagecollections .

	Und das sollte dafür sorgen, dass Deine alten Sessions
	nach einer Weile verschwunden sind. Natuerlich erst, wenn
	"gc_time" abgelaufen sind. Das sind in der Voreinstellung
	1440 Minuten, also 12 Stunden .


	Viele Grüße, johann



php::bar PHP Wiki   -   Listenarchive