Mailinglisten-Archive |
Hallo Friedhelm Betz! Du hast am Sonntag, 26. September 2004 um 14:28 folgendes geschrieben: > Hi Alexander, > > > > > Nochmal - habe leider noch keine Antwort bekommen - kann mir eine > > helfen? > > > > Hmmmm - kommen meine Mails nur nicht in der Liste an oder kann/will > > mir keiner Helfen? :-( > > Niels hatte Dir darauf ja schon geantwortet, moeglicherweise hast Du dich > etwas missverstaendlich ausgedrueckt. Was willst Du erreichen und was > funktioniert nicht, was Du probiert hast? Hmmmm - aber Du hast doch verstanden was ich will - was war denn so schwammig - damit ich das nächste Mal besser fragen kann. > Meine Interpretation von Deiner Mail: > Wie kann ich erreichen, dass veraltete Sessiondaten auf dem Server nach > irgendeiner Regel geloescht werden? Das soll unabhaengig davon funktionieren, > ob sich Leute ausloggen oder nicht? Genau - ich will halt verhindern das eine Session ewig offen ist und jemand "aus versehen" darauf gelangt. > Konkreter: Falls ein GC-Lauf stattfindet, werden Sessiondaten die > session.gc_maxlifetime uebserschritten haben, geloescht. > Wenn nur alle 14 Tage ein GC-Lauf stattfindet, liegen haufenweise Sessiondaten > auf dem Server, die uralt sind. > Die Wahrscheinlichkeit, dass _beim Starten_ einer Session ein GC-Lauf > stattfindet, berechnet sich nach: > session.gc_probability/session.gc_divisor gibt irgendeine Prozentzahl z.B. > 1/100. > Aber das weisst Du ja ;-) Genau, das versuche ich ja in einem "normalen" Logout eines Users auszunutzen. > > Wo ist der Fehler? > > Genau hier: > _Am Skriptende_ beim logoff setzt Du mit ini_set die session.gc_probability > auf 100/100, das hat aber nur Auswirkungen in Deinem aktuellen Skript. Ist > dein Skript zu Ende, gelten wieder die globalen Einstellungen aus php.ini, > httpd.conf oder .htaccess, die wahrscheinlich auf 1/100 stehen. > Startet die naechste Session, gelten diese globlen Einstellungen, dein ini_set > aus einem abgelaufenem Skript interessieren nicht. Das dachte ich mir auch schon so - nur habe ich eben auch gehofft bei einem 1/1 Verhältnis der GC sofort läuft bei einem LOGOFF und wenn ich mich nun abmelde und da noch eine "inactive"-Session rumliegt sollte die doch verschwinden - mein Gedankengang. > Langer Rede kurzer Sinn: > Wenn Du die Wahrscheinlichkeit erhoehen willst, dass ein GC-Lauf startet, > musst Du in Deinem Skript session.gc_probability vor session_start setzen. Tu ich - siehe andere Mail - Quelltext von Logout.php > Aus Performancegruenden ist es empfehlenswert, ganz auf die GC-Routinen von > PHP zu verzichten und verbliebene veraltetete Sessiondaten andersweitig > loszuwerden (z.B. cronjob). Das verhindert den Overhead, dass bei jedem > Skript, das eine Session startet der ganze GC-Mechanismus angeworfen wird. Ok, das ist eine Idee - dachte die PHP-Interners wären dafür besser geeignet - eben weils intern (also schon dabei) ist. > Ein letzter Tipp: Falls Du auf einem shared Hosting Server bist, wuerde ich > Dir empfehlen, den session.save_path in ein eigenes temp Verzeichnis zu legen > (im Gegensatz zu einem serverweiten /tmp Verzeichnis). Dann hast Du bessere > Kontrolle ueber _deine_ Sessiondaten (und sicherer ist es auch) ;-) Jou, das hatte ich eh schon so gemacht.... einfach aus dem Grund weil ich über einen "Trick" gucken wollte ob jemand online ist: Ich duchtsuche den session-Ordner nach session-Dateien und lese da jeweils den Usernamen herraus - wenn der mit einem übereinstimmt, der in der Userübersicht auch steht wird er als Online makiert. Daher sehe ich ja z.B. auch wenn jemand offensichtlich nicht LOGOFF genutzt hat... weil >24h ist doch recht unwahrscheinlich für eine so langweilig Datenbank... :-) Liebe Grüße Alex -- Bitte kein TOFU! Infos: http://palms-net.de/links/go_url.php?id=49 Liebe ist ein Glas, das zerbricht, wenn man es zu unsicher oder zu fest anfasst.
php::bar PHP Wiki - Listenarchive