W przypadku Magento CMS i tym podobnych (które nie usuwają starych sesji), po prostu używam zadań cron opartych na ustawieniach php.ini.
PHP5 / Ubuntu 14.04 / Debian
Systemowa konfiguracja cron.d dla php5 nie czyści Magento ./var/session (ani niczego poza domyślnym folderem sesji (/ var / lib / php5 dla Ubuntu i / var / lib / php5 / session lub / tmp / dla większości innych Linuksa) dists).
Ale nadal możesz używać „sessionclean” i „maxlifetime” zgodnie z domyślnym cronem systemu php5 / Debian:
Przykład, który możesz wypróbować z wiersza poleceń:
# sudo /usr/lib/php5/sessionclean /var/www/{yoursite}/var/session $(/usr/lib/php5/maxlifetime)
Więc po prostu włącz to do crontab systemu / root lub crontab użytkownika, który ma uprawnienia do odczytu / zapisu plików sesji:
$ sudo crontab -e
Dodaj, jeśli chcesz, aby wyglądał podobnie do systemowego php crona:
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)
lub - skoro wiemy, że te pliki / katalogi istnieją:
20,40 * * * * /usr/lib/php5/sessionclean /var/www/*/var/session $(/usr/lib/php5/maxlifetime)
Teraz mam możliwą do zarządzania liczbę sesji i jest utrzymywana w czystości przez domyślne śmieciowanie / czas życia poprzez ustawienia php.ini (cli).
(Możesz zostawić symbol wieloznaczny powyżej lub zastąpić nazwą witryny.)
EDYCJA (PHP7 / Ubuntu 16.xx / Debian):
Skrypt „sessionclean” zmienił się, a skrypt maksymalny okres użytkowania został usunięty. Dla zadania system / php cron jest to teraz jeden skrypt. Naprawdę nie możesz już tego używać, ponieważ wywołania plików są teraz statyczne dla skryptu.
Starszy skrypt php5 sessionclean może nadal działać, jeśli system się nie czyści. Co możesz zrobić, to pobrać starszy pakiet php5 Debiana i wypakować sessionclean
go. Możesz też po prostu skopiować to do obszaru skryptów (podając odpowiednie uprawnienia / własność / var / www / (strona)):
#!/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
Polecam także zmienić jego nazwę, aby nie mylić go z nowym cronjobem php 'sessionclean'. Następnie możesz podłączyć swój własny „maksymalny okres użytkowania” w następujący sposób:
20,40 * * * * /home/-username-/scripts/MySessionClean /var/www/*/var/session 61
(61 to wiek przykładowy (w minutach), a „MySessionClean” to zmieniony skrypt php5 pobrany lub skopiowany z góry).
W ten sposób unikamy wywołań php.ini / env.
(EDYCJA 13DEC2016: Zaktualizowano DEBIAN ARCHIWUM REPO LINK)