Mailinglisten-Archive |
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