PHP memcached сеанс истекает неожиданно - PullRequest
2 голосов
/ 21 марта 2012
session.save_handler = memcached
session.save_path = "127.0.0.1:11211"
session.gc_maxlifetime = 86400

В остальном это стандарт. Я ожидаю, что сеанс будет сохранен в течение как минимум 86400 секунд с момента последнего посещения пользователем страницы, т. Е. Если я запустил сеанс и посетил страницу через 5 минут, сеанс должен прекратиться только через еще 86400 секунды.

Однако сессия истекает примерно через час. Я прикрепил скриншот для phpMemcachedAdmin .

enter image description here

Ответы [ 2 ]

9 голосов
/ 22 марта 2012

Существуют и другие параметры, которые могут применяться:

Срок действия файла cookie сеанса может истечь раньше. Вызов session_set_cookie_params (86400) гарантирует, что ваш файл cookie сеанса существует столько же, сколько и ваш текущий сеанс.

Кроме того, gc_maxlifetime устанавливает максимум для времени жизни вашего сеанса. Не забывайте, что сборка мусора запускается с вероятностью: http://www.php.net/manual/en/session.configuration.php#ini.session.gc-probability:

session.gc_divisor вместе с session.gc_probability определяет вероятность того, что процесс gc (сборка мусора) запускается при каждой инициализации сессии Вероятность рассчитывается с использованием gc_probability / gc_divisor, например, 1/100 означает, что есть вероятность 1%, что процесс GC запускается при каждом запросе. session.gc_divisor по умолчанию равен 100.

Вы также можете попробовать проверить / изменить эти настройки.

0 голосов
/ 07 октября 2013
; Document expires after n minutes.
; http://php.net/session.cache-expire
session.cache_expire = 1440

На этот параметр может повлиять использование обработчика сессии memcached.

...