Для 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). dists).
Но вы все равно можете использовать «sessionclean» и «maxlifetime» в соответствии с системным cron по умолчанию php5 / Debian:
Пример, который вы можете попробовать из командной строки:
# sudo /usr/lib/php5/sessionclean /var/www/{yoursite}/var/session $(/usr/lib/php5/maxlifetime)
Просто включите это в системный / корневой каталог или в пользовательский файл, у которого есть права на чтение / запись для файлов сеанса:
$ sudo crontab -e
Добавьте это, вы хотите, чтобы это выглядело как системный 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).
(Вы можете оставить подстановочный знак выше или заменить на sitename.)
РЕДАКТИРОВАТЬ (PHP7 / Ubuntu 16.xx / Debian):
Сценарий 'sessionclean' был изменен, а скрипт maxlifetime был удален. Для задания system / php cron теперь это один скрипт. Вы больше не можете использовать это, поскольку вызовы файлов теперь статичны для скрипта.
Более старый сценарий php5 sessionclean все еще может работать для вас, если система не очищается . Что вы можете сделать, это взять старый пакет Debian php5 и извлечь sessionclean
его. Или вы можете просто скопировать это в свою область сценариев (предоставив надлежащие права / владелец / var / www / (site)):
#!/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
Я также рекомендую переименовать его, чтобы он не путался с новым php 'sessionclean' cronjob. Затем вы можете подключить свой собственный номер «maxlifetime» следующим образом:
20,40 * * * * /home/-username-/scripts/MySessionClean /var/www/*/var/session 61
(61 - это пример возраста (в минутах), а «MySessionClean» - переименованный скрипт php5, загруженный или скопированный сверху).
Таким образом, мы полностью избегаем вызовов php.ini / env.
(РЕДАКТИРОВАТЬ 13 ДЕКАБРЯ 2016 ГОДА: обновлена ССЫЛКА РЕПО РЕГИОНА DEBIAN)