Для Magento CMS тощо (які не прибирають старі сеанси) я просто використовую завдання cron на основі налаштувань php.ini.
PHP5 / Ubuntu 14.04 / Debian
Налаштування системи cron.d для php5 не очищає Magento ./var/session (або що-небудь, крім папки сеансу за замовчуванням (/ var / lib / php5 для Ubuntu та / var / lib / php5 / session або / tmp / для більшості інших Linux дисти).
Але ви все одно можете використовувати "sessionclean" та "maxlifetime" відповідно до системного крона php5 / Debian за замовчуванням:
Приклад ви можете спробувати з командного рядка:
# sudo /usr/lib/php5/sessionclean /var/www/{yoursite}/var/session $(/usr/lib/php5/maxlifetime)
Тому просто включіть це в систему / root crontab або в crontab користувача, який прочитав / записув дозвіл на файли сеансу:
$ sudo crontab -e
Додайте, це ви хочете, щоб він виглядав схожим на system php cron:
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)
або - оскільки ми знаємо, що існують ці файли / режими:
20,40 * * * * /usr/lib/php5/sessionclean /var/www/*/var/session $(/usr/lib/php5/maxlifetime)
Тепер у мене керована кількість сеансів, і вона зберігається в чистоті через збирання сміття / час життя за допомогою налаштувань php.ini (cli).
(Ви можете залишити підстановку вище або замінити ім'ям сайту.)
EDIT (PHP7 / Ubuntu 16.xx / Debian):
Сценарій 'sessionclean' змінився і сценарій maxlifetime був видалений. Для роботи системи / php cron це один сценарій. Ви більше не можете використовувати це, оскільки виклики файлів тепер статичні для сценарію.
Старіший скрипт php5 sessionclean все ще може працювати для вас, якщо система не очищається . Що ви можете зробити, це взяти старіший пакет Debian php5 та витягнути sessionclean
з нього. Або ви можете просто скопіювати це в область сценаріїв (надавши належні / var / www / (сайт) дозволи / права власності):
#!/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
Я також рекомендую перейменувати його, щоб його не плутали з новим cp-джоубом php 'sessionclean'. Потім ви можете підключити власний номер "максимального життя" таким чином:
20,40 * * * * /home/-username-/scripts/MySessionClean /var/www/*/var/session 61
(61 - приклад віку (в хвилинах), а "MySessionClean" - перейменований скрипт php5, завантажений або скопійований зверху).
Таким чином, ми уникаємо php.ini / env дзвінків повністю.
(РЕДАКЦІЯ 13DEC2016: ОНОВЛЕННЯ ДЕРЖАВНОГО АРХІВУ РЕПО ЛІНКУ)