PHP Session save_path mit Debian und fcgid

2009-08-31 - kostaki 6 Kommentare »

Wenn man eigene Session save_path Verzeichnisse angibt, wie ich es ja in meinem Apache-fcgid-SuExec-Tutorial beschrieben habe, muss man sich selbst um die Säuberung dieser Verzeichnisse kümmern. Standard mäßig schaltete Debian die von PHP unterstützten Mechanismen nämlich ab und kümmert sich mit einem Crontab selbst darum.

; This is disabled in the Debian packages, due to the strict permissions
; on /var/lib/php5. Instead of setting this here, see the cronjob at
; /etc/cron.d/php5, which uses the session.gc_maxlifetime setting below.
; php scripts using their own session.save_path should make sure garbage
; collection is enabled by setting session.gc_probability

Um dies zu "fixen" und nicht mit einem überfüllten Session Dir da zu stehen wird die Vhost php.ini mit dem folgenden ergänzt.

session.save_path 			= /var/www/vh-example/sessions
session.gc_probability		= 1
session.gc_diviso			= 100 ; standard
session.gc_maxlifetime		= 1440 ; standard

Ich gebe immer alle an, auch wenn sie die default Werte haben, um bei möglichen Anpassungen nicht lange suchen zu müssen. Mit den oben genannten Werten liegt die Wahrscheinlichkeit das die Garbage Collection ausgeführt wird bei 1% (1/100) und Sessions die älter als 24 Minuten sind werden als Garbage angesehen. Das kann man dann für seine eigenen Anforderungen anpassen und das für jeden Vhost einzeln.

Wenn man nicht die PHP eigene Sessionverwaltung benutzt, sondern eine eigene Lösung, dann ist das natürlich alles hinfällig. Dann muss man sich ja eh selbst um den Müll kümmern.

Related Links

Ähnliche Artikel

  1. 6 Kommentare

  2. Jan
    schrieb am 02.09.2009 um 11:54 Uhr

    Schön beschrieben, aber ich würde den diviso nicht auf dem Standardwert lassen, da die GC bei gut besuchten Seiten sonst recht oft ausgeführt wird. Moderne Festplatten sollten genügend Platz haben um auch mit Einstellungen wie 1/10000 klar zu kommen. Außerdem sind die 24 Minuten Session Timeouts auch nicht sehr Praxisnah.

  3. kostaki
    schrieb am 17.09.2009 um 14:57 Uhr

    Stimmt! Die Werte sollte man an seine eigenen Anforderungen anpassen und höhere Werte sind grundsätzlich bessere Ausgangswerte.

  4. Marus
    schrieb am 10.12.2009 um 18:48 Uhr

    Also wäre ein höherer Wert Grundsätzlich besser, wenn ich das richtig verstehe laut dem Kommentar von Jan? Es werden doch dann nur Sessions gelöscht, die über 24 Minuten liegen, oder auch andere?

  5. kostaki
    schrieb am 10.12.2009 um 20:44 Uhr

    Dabei geht es im Timeout Sessions die nicht mehr gebraucht werden. Einmal um die Zeit ab wann eine Session als Garbage angesehen wird und einmal wie oft die Garbage Control ausgelöst wird, also diese Timeout Sessions gesucht und gelöscht werden.

    Bei 1/100 liegt die Wahrscheinlichkeit das die Garbage Control gestartet wird also bei 1%. Bei 100 Aufrufen wird sie also 1 mal ausgeführt. Das ist recht gering und kann wie beschrieben Problemlos auf 1/10000 gesetzt werden. Kann man sich ja ansehen wie viele Sessions im Session Dir liegen und wie alt sie sind.

  1. Trackback(s)

  2. Apr 26, 2010:Mysql Datenbanken mit MySQLDump sichern | HowtoForge
  3. Apr 28, 2010:Tweets die PHP Session save_path mit Debian und fcgid » Server » Debian Root erwähnt -- Topsy.com

Kommentar schreiben

*

*