Форум сайта python.su
как проверить присутствует ли пользователь на сайте ?
Офлайн
Офлайн
Вообще это не возможно узнать в принципе только через какие то допущения.
Офлайн
http://hg.djangobb.org/djangobb/file/fb0e478ced35/djangobb/djangobb_forum/middleware.py#l9
regall
мы не ищем лёгкий путей, ага :]
Офлайн
Как один из очевидных вариантов вставить в базовый шаблон джаваскрипт, который при загрузке страницы и далее предположим каждые 30 секунд будет отсылать сигнал на сервер. И мы соответственно будет каждый раз обновлять DateTimeField завязанный на юзера, и если текущее время отличается от связанного с юзером временем более чем на 30 секунд, это означает что пользователя нет на сайте.
Из плюсов:
-легко делается без всяких дополнительных приложений
-быстро настраивается изменением всего одной временной константы
-работает если юзер держит страницу открытой, но не обновляет её
Из минусов:
-избыточная нагрузка на сервер
-требует у юзера включенного джаваскрипта
Офлайн
Согласен с romankrv, в данном случае он абсолютно прав, как бы хитро не реализовалась проверка, 100-й уверенности, что пользователь сейчас на сайте, не будет.
fthUseCase #1: Пользователь открыл страницу и пошел на 4 часа пивка попить…
Как один из очевидных вариантов вставить в базовый шаблон джаваскрипт, который при загрузке страницы и далее предположим каждые 30 секунд будет отсылать сигнал на сервер.
Офлайн
regallНу как бы формально он на сайте, если я джаббер оставлю включённым и уйду на пару часов, то он всё-равно будет показывать что я в сети. (да, может отличаться в зависимости от клиента)
UseCase #1: Пользователь открыл страницу и пошел на 4 часа пивка попить…
В данном случае вы проверяете не активность пользователя, а то, открыта ли вкладка в браузере.
regallОпять же если рассматривать формально, то такая конструкция отрабатывает так как и надо, ибо при нестабильном инете, юзер как раз таки и будет то появляться, то исчезать с сайта. Да и если что можно легко подрегулировать изменив 30 секунд на эти 2 минуты.
UseCase #2: У пользователя отвалился на 2 минуты интернет, или интернет нестабилен, он будет то появляться, то исчезать.
Офлайн
fthНе совсем уместный пример. С джаббером другая ситуация, там есть статусы, и если вы не будете производить действия (например, двигать мышкой, или стучать по клавиатуре), то статус утсановится соответствующий (преимущество толстого клиента), ну, либо вам будут наяривать, думая что вы там =).
Ну как бы формально он на сайте, если я джаббер оставлю включённым и уйду на пару часов, то он всё-равно будет показывать что я в сети. (да, может отличаться в зависимости от клиента)
fthХудо будет, если при “входе”/“выходе” пользователя выполняются некие действия, которые могут быть не такими уж простыми с точки зрения нагрузки.
Опять же если рассматривать формально, то такая конструкция отрабатывает так как и надо, ибо при нестабильном инете, юзер как раз таки и будет то появляться, то исчезать с сайта.
Офлайн
Может я не в теме, но на всякий случай вот ссылка http://djangosnippets.org/snippets/947/
Офлайн
не для этих вещей умные люди СУБД писали…
чем мой пример в 3 строки плох?
Офлайн