Назад | Перейти на главную страницу

Удаляются ли файлы сеанса PHP?

Я вижу, что в моем каталоге «/ tmp» (машина с CentOS) есть тысячи файлов, и почти все они являются файлами сеанса PHP.
Меня беспокоит возможное влияние этого на мою систему.
Эти файлы когда-либо удалялись ОС, Apache или PHP? или я должен сам позаботиться об этом?

Они должны быть удалены сборщиком мусора PHP. Частота регулируется session.gc_maxlifetime настройка в php.ini. Возможно, если это не сработает, у вас возникнут другие проблемы.

По умолчанию в Debian и Ubuntu сеансы очищаются cron /etc/cron.d/php5

# Look for and purge old sessions every 30 minutes
09,39 *     * * *     root   [ -x /usr/lib/php5/maxlifetime ] && [ -d /var/lib/php5 ] && find /var/lib/php5/ -type f -cmin +$(/usr/lib/php5/maxlifetime) -delete

где /usr/lib/php5/maxlifetime дает время жизни в минутах, как установлено в session.gc_maxlifetime.

Также при перезагрузке - поскольку / tmp всегда очищается при перезагрузке.

Вы можете настроить cron-скрипт для их автоматической очистки. Как правило, рекомендуется проверить дату создания, более раннюю, чем установленный срок жизни файлов cookie в вашей системе.

Таким образом ограничивается время жизни cookie (должно быть выполнено до того, как скрипт что-либо выведет):

<?php
session_name('my_site_name');
session_set_cookie_params(1209600); # max cookie age of 14 days
# send cookie headers
session_start();
?>

Затем в вашем сценарии очистки:

#!/bin/sh
find /tmp -maxdepth 1 -type f -name 'php_session_file_prefix*' -ctime +15 -exec rm -f {} \;

Затем в вашем crontab:

# Run daily cron jobs at 03:40 every day
40 3 * * * /path/to/php-session-cleanup.sh