Чистка файлов сессий (VPS + Debian)

12
ijk
На сайте с 19.08.2007
Offline
190
ijk
5644

Переехал на FastVPS (Debian) и сразу столкнулся вот с какой проблемой. Никто не чистит папку сессий! Погуглив немного нашёл, что в Debian в связи с ограничениями безопасности, по умолчанию стоит

session.gc_probability = 0

т.е. PHP сессии по умолчанию не чистит. По идее это должен делать /etc/cron.d/php5, но он почему-то этого тоже не делает. Судя по всему из-за того, что файлы сессий хранятся в директории пользователя /var/www/someuser/data/tmp.

Наверняка кто-то сталкивался с подобной проблемой. Как лучше всего её решить? Пока что поставил в /etc/php5/apache2/php.ini

session.gc_probability = 1

и перезагрузил Apache. Насколько это грамотно? Или лучше настроить сборку мусора по cron?

Himiko
На сайте с 28.08.2008
Offline
560
#1

Либо через php, либо:

Если панель ISPManager, то в крон:

for user in $(/usr/local/ispmgr/sbin/mgrctl -m ispmgr user | cut -d' ' -f1 | sed s/name=//) ; do [ -x /usr/lib/php5/maxlifetime ] && [ -d /var/www/$user/data/mod-tmp ] && find /var/www/$user/data/mod-tmp/ -type f -cmin +$(/usr/lib/php5/maxlifetime) -print0 | xargs -n 200 -r -0 rm ; done

Профессиональное администрирование серверов (https://systemintegra.ru). Круглосуточно. Отзывы (/ru/forum/834230) Лицензии (http://clck.ru/Qhf5) ISPManager,VDSManager,Billmanager e.t.c. по низким ценам.
ijk
На сайте с 19.08.2007
Offline
190
ijk
#2
Himiko:
Либо через php, либо:

Если панель ISPManager, то в крон:

for user in $(/usr/local/ispmgr/sbin/mgrctl -m ispmgr user | cut -d' ' -f1 | sed s/name=//) ; do [ -x /usr/lib/php5/maxlifetime ] && [ -d /var/www/$user/data/mod-tmp ] && find /var/www/$user/data/mod-tmp/ -type f -cmin +$(/usr/lib/php5/maxlifetime) -print0 | xargs -n 200 -r -0 rm ; done

Простите за ламерский вопрос. Я так понимаю, что можно эту команду либо просто через создать задание задать на выполнение каждые X минут, либо же создать скрипт с правами на исполнение, туда положить команду и опять же создать cron-job с вызовом этого скрипта раз в X минут. Правильно?

Himiko
На сайте с 28.08.2008
Offline
560
#3

Всё верно.

Можно просто в крон добавить, а можно в скрипт и через крон

Alex91
На сайте с 30.12.2007
Offline
258
#4

ijk, http://phpsuxx.blogspot.com/2010/09/ispmanager-debian-php-mod-tmpbin-tmp.html

Alex91 добавил 07.12.2011 в 14:44

Himiko, а bin-tmp?

C Уважением, Алексей
M
На сайте с 16.09.2009
Offline
278
#5
ijk:
т.е. PHP сессии по умолчанию не чистит. По идее это должен делать /etc/cron.d/php5, но он почему-то этого тоже не делает.

Потому что он не предназначен для использования разработчиками всяких панелек, которые усердно игнорируют документацию дистрибутива.

Если апач работает под общим пользователем - я бы рекоммендовал изменить session.save_path в стандартный для Debian и использовать штатный скрипт. Или использовать Ваш вариант.

"Решение" Himiko очевидно глючно. Начиная c того, что mod-tmp не только для сессий и заканчивая тем, что session.gc_maxlifetime может быть _разным_.

Абонементное сопровождение серверов (Debian) Отправить личное сообщение (), написать письмо ().
Andreyka
На сайте с 19.02.2005
Offline
822
#6

А еще можно не насиловать ФС а хранить сессии в мемкеше. Но это так, на любителя.

Не стоит плодить сущности без необходимости
Alex91
На сайте с 30.12.2007
Offline
258
#7

myhand, решение Himiko идет в коробке ISP

M
На сайте с 16.09.2009
Offline
278
#8
Alex91:
myhand, решение Himiko идет в коробке ISP

Это что за "коробка" такая, если следует инструкция:

Himiko:
Можно просто в крон добавить, а можно в скрипт и через крон

Не, Вас кто-то дезинформировал. Это доморощенный костыль, за который кому-то должно быть стыдно.

ijk
На сайте с 19.08.2007
Offline
190
ijk
#9
myhand:
Это что за "коробка" такая, если следует инструкция:

Не, Вас кто-то дезинформировал. Это доморощенный костыль, за который кому-то должно быть стыдно.

Поставил VPS на этот костыль — всё отлично работает. Другое дело, что ваше замечание насчёт специальной папки под файлы сессий дельное.

M
На сайте с 16.09.2009
Offline
278
#10
ijk:
Поставил VPS на этот костыль — всё отлично работает.

Нет. Это значит, что с проблемой пока персонально вы не столкнулись.

Хотите - ждите и надейтесь на чудо. Вы ведь не обязаны использовать предоставленную вам информацию разумно.

12

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий