Почему сессия завершается во время работы с сайтом?

Здравствуйте. Порой сессия моих пользователей завершается прямо во время пользования сайтом, особенно чем больше посетителей - тем чаще пользователя отправляет на авторизацию. Это даже не зависит от времени, установленном в php.ini. При этом у меня на каждой странице session_start() и даже каждую секунду через AJAX вызывается скрипт, в котором тоже есть session_start(). Никаких функций для завершения сессий не использую. По каким причинам сессия может завершаться?
  • Вопрос задан
  • 544 просмотра
Пригласить эксперта
Ответы на вопрос 1
Lobotomist
@Lobotomist
Software Developer
На первый взгляд - какие-то (или один) php скрипты запускаются со своим маленьким значением gc_maxlifetime. И чем больше людей тем чаще запускается этот скрипт и стираются файлы сессий, которые он считает устаревшими.
Нужно каким-то образом проверить это предположение.
1. Установить для сайта другую директорию для хранения сессий. Посмотреть - осталась ли проблема. Если она ушла - значит есть какие-то еще php скрипты, которые удаляют файлы сессий.
2. Сначала глазами проверить нет ли переопределения gc_maxlifetime перед session_start() во всех скриптах сайта. Если ничего не найдется - можно вынести работу с сессиями в отдельный класс и поставить там временно логирование куда-то настроек сессии при работе с ней. Возможно - найдутся виновные скрипты, которые являются частью сайта.

И, на всякий случай, укажите, какие значения у следующих настроек во время выполнения?
var_dump(ini_get('session.cookie_lifetime'));
var_dump(ini_get('session.gc_maxlifetime'));
var_dump(ini_get('session.gc_divisor'));
var_dump(ini_get('session.gc_probability'));
Ответ написан
Ваш ответ на вопрос

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

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