значение настройки, если пользователь выходит из веб-сайта - PullRequest
1 голос
/ 09 июля 2011

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

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

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

мой сайт использует php, html, css и mysql.

Ответы [ 4 ]

5 голосов
/ 09 июля 2011

Наиболее распространенный подход - сохранить метку времени с последним действием пользователя, а не просто флаг «онлайн».Обновляйте временную метку для каждого действия и рассчитывайте офлайн-пользователей, проверяя пользователей, которые были неактивны, скажем, более пяти минут.

По соображениям производительности вы можете также сохранить временную метку в текущем сеансе пользователей.и обновляйте отметку времени вашей активности в базе данных только после истечения срока ее действия.

4 голосов
/ 09 июля 2011

Поскольку закрытие браузера (или вкладки браузера) не запускает никаких событий на ваш сервер, в основном вы не можете реагировать на это. В таком случае я бы предпочел механизм сердцебиения.

Другой способ заключается в том, чтобы «предположить», что клиент вышел из системы, если он не запустил какое-либо событие, скажем, 20 минут или около того.

Подобная проблема обсуждалась здесь: Проверьте, не включен ли пользователь

2 голосов
/ 09 июля 2011

Например, вы можете проверить, отвечает ли пользователь Ajax.Или вы можете установить статус в автономном режиме по таймауту неактивности.

0 голосов
/ 09 июля 2011

возможно, при закрытии браузера происходит событие javascript, при котором вы можете использовать ajax для отправки уведомления на сервер.

Лучший способ, который я бы предположил, - это иметь клиентский JavaScript для периодического уведомления сервера о том, что пользователь все ещетам.Как только уведомление не получено - он должен быть в автономном режиме.

...