Проблема:
У меня есть веб-сайт, который использует сеансы PHP, чтобы позволить пользователям войти в систему. Он работает нормально.Но сеанс истекает слишком рано, чтобы 1 минута бездействия вышла из системы пользователя.
Мое окружение:
Php версия: 7.1
Сервер:NGINX
Framework: CakePHP 3.5
Что я сделал до сих пор?
Я выполнил каждое решение в StackOverflow или в результате поиска.Я увеличил время ожидания сеанса в конфигурациях php.ini и CakePHP.
Решение
После 2 или 3 дней исследований я нашел решение.В моем php.ini я нашел конфигурацию с именем session.gc_probability
и для этого поставил значение 0
.Теперь мои сеансы никогда не истекают, кроме случаев, когда пользователь намеренно выходит из системы.
И теперь моя текущая проблема , я не хочу, чтобы моя конфигурация session.gc_probability
была равна нулю, поскольку она не будетсобрать мусор (Не совсем уверен в этом. Пожалуйста, исправьте меня, если эта информация неверна.).И это приведет к тому, что сессии останутся на месяц или годы, которые являются настоящим GARBAGE для сервера.
У меня появилась идея дать session.gc_probability
нулевое значение из здесь
session.gc_divisor coupled with session.gc_probability defines the
probability that the gc (garbage collection) process is started on
every session initialization. The probability is calculated by using
gc_probability/gc_divisor, e.g. 1/100 means there is a 1% chance that
the GC process starts on each request. session.gc_divisor defaults to
100.
Что именно не так с моими конфигурациями?Что заставляет сборщик мусора удалять мои сессии так скоро?session.gc_probability
было 1, а session.gc_divisor
было 1000. Я думаю, что процесс с вероятностью 1/1000 не должен запускаться каждые 1 или 2 минуты.