PHP Sessionverwaltung mittels Cronjob

Da viele Webseiten auf per PHP generierten Sessiondateien basieren, die im in der php.ini angegebenen session.save_path abgespeichert werden, muss man sich Gedanken machen wie man diese wieder los werden möchte.

PHP erstellt Sessions, aber löscht diese nicht. Warum weiß niemand. Also muss ein Cronjob her der dies übernimmt:

# Öffnen der Zieldatei für unseren Cronjob
nano /etc/cron.d/php
# Einfügen einer Zeile dieser Art
09,39 *     * * *     root   for i in /home/www/*/phptmp; do find $i -type f -cmin +1440 -print0 | xargs -r -0 rm; done

Dieser Cronjob schaut in jedem Verzeichnis unter /home/www/ ob es in einem Unterverzeichnis einen Ordner namens „phptmp“ gibt. Diesen verwende ich immer für die Sessions => php.ini session.save_path = /home/www/beispiel.de/phptmp

Dort werden alle Dateien die älter sind als 1440 Minuten = 1 Tag gesucht und anschließend gelöscht.

Wer dies nicht tut und gleichzeitig eine große Webapplikation im laufen hat, wird bald merken was es bedeutet dass die minimale Dateigröße in einem Linux Dateisysteme immer der bei der Partitionierung angegebenen Blockgröße entspricht (ext3 default = 1024 Byte).

KategorienApache - PHP
  1. Mick
    23. Dezember 2008, 00:28 | #1

    Vielen Dank.
    Diesen „Schnipsel“ habe ich gesucht. :)

  1. Bisher keine Trackbacks