Für Magento CMS und ähnliches (die keine alten Sitzungen bereinigen) verwende ich nur Cron-Jobs, die auf den Einstellungen von php.ini basieren.
PHP5 / Ubuntu 14.04 / Debian
Das System cron.d setup für php5 bereinigt Magento ./var/session (oder irgendetwas anderes als den Standard-Sitzungsordner (/ var / lib / php5 für Ubuntu und / var / lib / php5 / sessions oder / tmp / für die meisten anderen Linux) nicht dists).
Sie können jedoch weiterhin "sessionclean" und "maxlifetime" gemäß der Standard-PHP5 / Debian-System-Cron verwenden:
Beispiel, das Sie über die Befehlszeile ausprobieren können:
# sudo /usr/lib/php5/sessionclean /var/www/{yoursite}/var/session $(/usr/lib/php5/maxlifetime)
Integrieren Sie dies einfach in eine System- / Root-Crontab oder eine Crontab eines Benutzers, der über Lese- / Schreibrechte für die Sitzungsdateien verfügt:
$ sudo crontab -e
Fügen Sie dies hinzu, wenn Sie möchten, dass es ähnlich wie System-PHP-Cron aussieht:
20,40 * * * * [ -x /usr/lib/php5/maxlifetime ] && [ -x /usr/lib/php5/sessionclean ] && [ -d /var/www/*/var/session ] && /usr/lib/php5/sessionclean /var/www/{yoursite}/var/session $(/usr/lib/php5/maxlifetime)
oder - da wir wissen, dass diese Dateien / Verzeichnisse existieren:
20,40 * * * * /usr/lib/php5/sessionclean /var/www/*/var/session $(/usr/lib/php5/maxlifetime)
Jetzt habe ich eine überschaubare Anzahl von Sitzungen und es wird über die standardmäßigen Garbage Collection / Lifetime-Einstellungen in der php.ini (cli) sauber gehalten.
(Sie können den Platzhalter oben belassen oder durch den Site-Namen ersetzen.)
BEARBEITEN (PHP7 / Ubuntu 16.xx / Debian):
Das 'sessionclean'-Skript wurde geändert und das maxlifetime-Skript wurde entfernt. Für den System / PHP-Cron-Job ist es jetzt ein Skript. Sie können dies nicht mehr wirklich verwenden, da die Dateiaufrufe jetzt für Skripte statisch sind.
Das ältere php5 sessionclean Skript kann immer noch für Sie arbeiten, wenn das System nicht aufräumt . Was Sie tun können, ist das ältere Debian-PHP5-Paket zu nehmen und daraus zu extrahieren sessionclean
. Oder Sie kopieren dies einfach in Ihren Skriptbereich (geben Sie die richtigen / var / www / (Site) -Berechtigungen / Eigentumsrechte):
#!/bin/sh
# first find all used files and touch them (hope it's not massive amount of files)
[ -x /usr/bin/lsof ] && /usr/bin/lsof -w -l +d "${1}" | awk -- '{ if (NR > 1) { print $9; } }' | xargs -i touch -c {}
# find all files older then maxlifetime
find "${1}" -depth -mindepth 1 -maxdepth 1 -ignore_readdir_race -type f -cmin "+${2}" -delete
Ich empfehle es auch umzubenennen, damit es nicht mit dem neuen PHP 'sessionclean' Cronjob verwechselt wird. Sie können dann Ihre eigene "maxlifetime" -Nummer wie folgt eingeben:
20,40 * * * * /home/-username-/scripts/MySessionClean /var/www/*/var/session 61
(61 ist das Beispielalter (in Minuten) und 'MySessionClean' ist das umbenannte PHP5-Skript, das von oben heruntergeladen oder kopiert wurde).
Auf diese Weise vermeiden wir alle Aufrufe von php.ini / env.
(EDIT 13DEC2016: Aktualisierter DEBIAN ARCHIVE REPO LINK)