Другие языки программирования и технологии

php Как определить что пользователь уже не онлайн то есть полностью ушёл со страницы

Аяксушка в помощь (AJAX). Нужен JavaScript, который раз в секунду дёргает на сервере страничку с урлом, скажем, mysite.ru/alive.php?USER_ID=123 На сервере alive.php выставляет юзеру 123 соответствующий статус - онлайн. Тот же аяксушка при закрытии страницы шлёт запрос о том, что пользователь закрывает страничку. А на сервере, скажем, каждые 10 минут скрипт проходит по всем пользователям и у кого статус "Онлайн" выставлен более, чем 10 минут назад, ставит их в офлайн.

Недостатки:

1. Если не работает JS (мобильник, например) , то ничего не выйдет.
2. Необходимо всё время ломиться в БД с запросами и дёргать всех онлайновых юзеров. Если их много - это ресурсы сервера. Этот недостаток можно ослабить, если делать запросы не так часто.

Преимущества:

1. Если даже компьютер клиента загорелся, он не будет вечно онлайн - через какое-то время его переведут в статус оффлайн.
2. Более-менее отображение онлайн статуса в реальном времени.
Николай Колесник
Николай Колесник
1 094
Лучший ответ
на страничке жабоскриптом проверять активность и периодически пулять запросы на сервер - мол, жив еще
Это очень сложно. Можно записать в файл, последний визит пользователя (дату и время) . А потом проверять, время спомощью метода date_diff:
http://www.php.net/manual/ru/function.date-diff.php Можите сделать как вам уже посоветовывали, ява скриптом проверять, и ajaxом что мол жив еще.
Учитесь работать с XML файлами http://www.php.net/manual/ru/refs.xml.php и JQuery - http://jquery-docs.ru/
Сергей Войтик
Сергей Войтик
8 830
window.onbeforeunload
developer.mozilla.org/en-US/docs/DOM/window.onbeforeunload

Либо отсылать keep-alive сообщения как уже предлагали выше.
Wusu Zhong Wu
Wusu Zhong Wu
2 769