2013-04-11 5 views
0

Есть ли способ получить продолжительность сеанса пользователя?CakePHP (или просто PHP) получает продолжительность сеанса

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

Что делать, если пользователь не выходит из системы и сеанс заканчивается? Есть ли способ узнать, когда/когда это произойдет?

+0

«Есть ли способ узнать, если это произойдет?» --- Если только у вас есть пользовательский обработчик сеансов – zerkms

ответ

2

Невозможно узнать, активен ли сеанс, поэтому самое лучшее, что вы можете сделать, это сохранить SESSION_START_TIME в вашей базе данных и в каждом журнале запросов LAST_REQUEST_TIME.

так вы знаете, когда было началом и «возможным» окончанием сеанса.

вы также можете узнать, сколько активных сеансов есть прямо сейчас, проверив все сеансы с LAST_REQUEST_TIME<5minutes ... так что это не плохое решение.

+0

+1 Я просто собирался опубликовать тот же ответ. Я бы рекомендовал хранить все время в формате timestamp Unix с помощью time(). Это упрощает вычисления с помощью php. –

0

Нет, не совсем. HTTP - сеанс меньше. Люди, которые действительно хотят более грамотную идею активных пользователей, часто используют какую-то технологию сердечных сокращений, которая создает постоянное соединение или имитирует его с помощью опроса, использования ajax или флеш-ролика или веб-узлов.

PHP-сессии - это скорее механик для связывания некоторого временного хранилища с серверами с конкретным экземпляром клиента/браузера, несмотря на то, что некоторые могут читать его имя.

Смежные вопросы