phpbar.de logo

Mailinglisten-Archive

[php] php-Sessions? (ap)

[php] php-Sessions? (ap)

Alexander Palm Alex.Palm at gmx.de
Son Sep 26 15:17:21 CEST 2004


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