Обновление, 24OCT2011: я переместил это в ServerFault, что, вероятно, более уместно и именно там я и хотел в первую очередь опубликовать это. Однако я так и не смог найти опцию «перейти к SF», просто скопировал ее туда. Кто-нибудь может помочь с этим перемещением?
Я провел некоторое исследование по этому вопросу и не нашел окончательного ответа.
У нас есть веб-приложение, использующее обработчик сеансов PHP + Memcache.
У меня есть несколько вопросов, все они взаимосвязаны, но в конечном итоге моя проблема заключается в следующем: «Почему сессии PHP явно не истекают, когда мы думаем, что так и должно быть?» то есть конечный пользователь должен выйти из приложения через определенное время, но это не так.
Вот точки, помогите мне соединить их и скажите, где я ошибаюсь:
- Насколько я понимаю, Memcache истекает срок действия ключей в зависимости от установленного времени в секундах (или метки времени unix для больших значений).
- Истечение срока действия лениво - то есть ничего не удаляется заранее
- Обработчик сессии memecache PHP использует sessions.gc_max_lifetime для установки срока действия ключа memcache. ИДК, может быть, нет?
- Memcache должен, обслуживая запрошенный ключ и увидев, что срок его действия истек, не обслуживать его (а затем, возможно, также удалить?). Но, по крайней мере, не служить ему.
- Этот акт отказа от обслуживания должен, для PHP, приравниваться к удаленному сеансу и выходу пользователя из системы.
Пользователи не выходят из системы.
Как я могу отладить это? Memcache не совсем прозрачен.
Обновление
Я должен был указать, что пример неработающего случая - это сайт с тайм-аутом сеанса, равным двум часам. Примерный пользователь в последний раз будет использовать сайт ночью, а затем, через 8–10 часов, вернется на сайт и все равно войдет в систему.