Удалить старые файлы сессий из пользовательской папки сессий? - PullRequest
5 голосов
/ 04 октября 2011

Используя PHP, если я устанавливаю пользовательскую папку сеанса для хранения файлов сеанса, что я должен сделать, чтобы в конечном итоге удалить старые файлы сеанса?Есть ли способ, чтобы Apache или PHP обрабатывали это для меня, или мне нужно что-то настроить для очистки этой папки самостоятельно?Любая информация на эту тему приветствуется.

В настоящее время я использую session_save_path (), чтобы изменить папку сеанса, если это имеет значение.

Ответы [ 2 ]

7 голосов
/ 04 октября 2011

Пока вы не используете опцию N; в настройке php для session.save_path, PHP будет автоматически очищать устаревшие сессии в соответствии с session.gc_probability / session.gc_divisor / session.max_lifetime настройки

Если вы свернули свои собственные обработчики сеансов, вы будете нести ответственность за очистку.

6 голосов
/ 04 октября 2011

Да, вам нужно вручную очистить их, потому что вы настроили свой собственный путь сохранения сеанса . (Сегодня говорят, что это только для опции разделенного каталога, но у меня есть серверы, где это все еще необходимо, даже не используя эту функцию, а используя собственный путь сохранения сеанса, и это какой-то PHP 5.2.x, и мне нужно очистить вручную.)

Вы можете проверить возраст файла и удалить его, если он старше x дней / минут, независимо от того:

cd /path/to/sessions; find -cmin +24 | xargs rm

Взято из примечательной части php.ini:

; NOTE: If you are using the subdirectory option for storing session files
;       (see session.save_path above), then garbage collection does *not*
;       happen automatically.  You will need to do your own garbage
;       collection through a shell script, cron entry, or some other method.
;       For example, the following script would is the equivalent of
;       setting session.gc_maxlifetime to 1440 (1440 seconds = 24 minutes):
;          cd /path/to/sessions; find -cmin +24 | xargs rm

См. Также этот связанный / дублирующий вопрос: очистка файлов сессии php


Команда «Single»:

find /path/to/session -name sess_* -cmin +24 -exec rm {} \;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...