Palych_tw
@Palych_tw
Типа веб-разработчик

PHP-сессии. Сколько их создается для одного посетителя?

Всем привет! Есть VPS с Ubuntu 12. Внезапно легли все сайты (5шт.) Поковырялся, проблема в том, что закончилось место. На самом деле закончились иноды. В папке с сессиями насобиралось полтора миллиона файлов sess_* . На этот момент сайты работали 5 месяцев, все молодые. Суммарный трафик не более 300 посетителей в сутки. Отсюда и вопрос нормально ли такое количество сессий, или это вредонос? И почему вообще apache или php не убирают за собой?

UPD в php.ini самого php стоит session.gc_maxlifetime = 1440
в сайтах на Opencart в php.ini стоит session.gc_maxlifetime = 3600
У WP своих php.ini не нашел.

UPD 2 сессии лежат в /var/www/user_name/data/mod-tmp
И я вижу там файлы созданные более 2-х часов назад. Это то время когда почистил все и задал вопрос.

UPD 3 Докопались до сути. В php.ini выключен сборщик мусора. стояли такие значения
session.gc_probability = 0
и
session.gc_divisor = 1000
Поставил session.gc_probability = 1 сессии начали удаляться.
Всем спасибо!
  • Вопрос задан
  • 2076 просмотров
Решения вопроса 3
Wolfnsex
@Wolfnsex Куратор тега PHP
Если не хочешь быть первым - не вставай в очередь!
Пока думал о причино-следственных связях происходящего и писал ответ, тут уже без меня и написали много и на часть вопросов ответили... и даже прояснилось кое что...

Как Вы понимаете, сказать с большей вероятностью сложно, но мне картина видится, в таком порядке:
1. У Вас есть сайт на ВП
2. Админка ВП или её признаки, доступны по стандартным адресам
3. Заходит бот, в поисках свежего ВП для взлома (с целью рассылки спама), и пытается брутфорсить Вашу админку, или ещё что-то в таком духе делать
3.1 Возможно ему приглянулась админка не ВП, а какого другого сайта... без подробных логов доступа угадать - как пальцем в... небо!
4. Бот несколько часов генерирует паразитные запросы
5. Каждый такой запрос, создаёт новый файл сессии
6. По умолчанию, файл сессии ПХП хранится 24 часа
7. Файлов сессий стало слишком много

Это наверное, самый вероятный вариант из всех, что мне удалось придумать не имея доступа к серверу и практически никакой информации о происходящем внутри оного...

Возможные полезные действия с Вашей стороны:
а) Можно настроить время жизни сессий в ПХП
б) Не хранить админки в свободном доступе
в) Выбрать и установить какой-то механизм защиты от ботов. Не сложно догадаться, что пользователь не мог запрашивать 500 страниц в минуту...
Ответ написан
DmitriyEntelis
@DmitriyEntelis
Думаю за деньги
VerniteAccount: помнит не правильно. В куках хранится id сессии, сами данные сессии по умолчанию хранятся именно в файлах, за настройку отвечают параметры php.net/manual/ru/session.configuration.php#ini.se... и php.net/manual/ru/session.configuration.php#ini.se...

время жизни хранится в php.net/manual/ru/session.configuration.php#ini.se...

а вообще категорически не советую использовать родной механизм сессий php.
Ответ написан
opium
@opium
Просто люблю качественно работать
судя по всему у вас испменеджер и отключена чистка сессий
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@Arik
скорее всего сайты указали хранить сессии на несколько лет - общая практика в целом, вы в свою очередь можете настроить какой крон и в наглую удалять файлы по времени модификации, в целом пользователей просто попросят еще раз авторизоваться, если не было их больше месяца допустим. Еще вариант переназначить механизм сессии хранить их в БД, мемкэш или редис, но опять же это ресурсы, я бы пошел по первому пути, не нравится, пусть переделают механизм сессии на свое и получат сессию больше месяца или два сколько там дадите им, но не думаю что они этого даже заметят
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы