Как настроить PHP для автоматического регулярного удаления данных сеанса / файлов sess_? - PullRequest
0 голосов
/ 14 февраля 2020

Данные сеанса PHP хранятся на стороне сервера в файлах sess_{$hash} в каталоге, заданном параметром session.save_path php.ini.

Если я правильно понимаю, эти файлы должны удалить через определенный промежуток времени. Как получить и как установить это время? Я пробовал настройки session.cache_expire и session.gc_maxlifetime. Например, я установил session.cache_expire на 2 (минут), но через две минуты файлы все еще там. Я также установил session.gc_maxlifetime на 120 (секунды). Но это также не сработало.

Как настроить PHP на удаление файлов sess_* через определенный промежуток времени?

1 Ответ

2 голосов
/ 14 февраля 2020

session.gc_maxlifetime - это то, что определяет, когда данные сеансов помечаются для сбора мусора ( не обязательно, когда они удаляются ). Фактическое удаление этих данных зависит от ряда переменных. Наиболее заметно это session.gc_probability и session.gc_divisor. вероятность над делителем определяет вероятность того, что процесс инициализации сеанса вызовет сборщик мусора для очистки помеченного мусора. По умолчанию они равны 1 и 100, соответственно ( означает, что есть вероятность 1%, что сборщик мусора очистит ).

Это механизм по умолчанию PHP для сборки мусора данных сеанса. Однако в некоторых системах (, особенно в Ubuntu ) сеанс по умолчанию G C заменен внешним механизмом очистки, который реализован в виде задания cron, которое регулярно выполняется для очистки файлов сеанса на основе вызовов stat и session.gc_maxlifetime.

Вы склонны не замечать эти побочные эффекты на занятом сайте, так как количество вызовов session_start() увеличивается, вероятность того, что устаревшие данные сеанса регулярно очищаются, увеличивается. Однако на сайте с низким трафиком c (а именно в среде разработки) эта вероятность значительно снижается настолько, что вы можете заметить, что устаревшие данные сеанса некоторое время остаются без движения. Как правило, это не то, чтобы беспокоиться. До тех пор, как вы удаляете сеанс сварить ie и регулярно используя session_destroy(), когда потребность сессии будет удалена, это все спорно.

...