Настройка Memcache + PHP: как истекает срок действия ключей в memcache? - PullRequest
2 голосов
/ 21 октября 2011

Обновление, 24OCT2011: я переместил это в ServerFault, что, вероятно, более уместно и именно там я и хотел в первую очередь опубликовать это. Однако я так и не смог найти опцию «перейти к SF», просто скопировал ее туда. Кто-нибудь может помочь с этим перемещением?

Я провел некоторое исследование по этому вопросу и не нашел окончательного ответа.

У нас есть веб-приложение, использующее обработчик сеансов PHP + Memcache.

У меня есть несколько вопросов, все они взаимосвязаны, но в конечном итоге моя проблема заключается в следующем: «Почему сессии PHP явно не истекают, когда мы думаем, что так и должно быть?» то есть конечный пользователь должен выйти из приложения через определенное время, но это не так.

Вот точки, помогите мне соединить их и скажите, где я ошибаюсь:

  • Насколько я понимаю, Memcache истекает срок действия ключей в зависимости от установленного времени в секундах (или метки времени unix для больших значений).
  • Истечение срока действия лениво - то есть ничего не удаляется заранее
  • Обработчик сессии memecache PHP использует sessions.gc_max_lifetime для установки срока действия ключа memcache. ИДК, может быть, нет?
  • Memcache должен, обслуживая запрошенный ключ и увидев, что срок его действия истек, не обслуживать его (а затем, возможно, также удалить?). Но, по крайней мере, не служить ему.
  • Этот акт отказа от обслуживания должен, для PHP, приравниваться к удаленному сеансу и выходу пользователя из системы.

Пользователи не выходят из системы.

Как я могу отладить это? Memcache не совсем прозрачен.

Обновление Я должен был указать, что пример неработающего случая - это сайт с тайм-аутом сеанса, равным двум часам. Примерный пользователь в последний раз будет использовать сайт ночью, а затем, через 8–10 часов, вернется на сайт и все равно войдет в систему.

1 Ответ

0 голосов
/ 21 октября 2011

Конечный пользователь должен выйти из приложения в установленное время после последнего запроса к серверу .Каждый раз, когда клиент делает запрос, его истечение сбрасывается.Если срок действия составляет 3 минуты, а вы делаете запрос каждые 2 минуты, ваш сеанс никогда не истечет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...