![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы
![]() |
Поиск в этой теме
![]() |
![]() |
#1 |
Форумчанин
Регистрация: 04.01.2010
Сообщений: 230
|
![]()
Не подскажите ли как вобще реализуется такая штука как онлайн/офлайн пользователи? в гугле не нашел...
|
![]() |
![]() |
![]() |
#2 |
Участник клуба
Регистрация: 28.06.2009
Сообщений: 1,950
|
![]()
Когда пользователи заходят на сайт, обычно в БД или файл записывается информация о них и отслеживаются действия за посл. время. Обычно ставится кука. А когда она удаляется, то считается, что пользователь вышел из системы
|
![]() |
![]() |
![]() |
#3 |
Старожил
Регистрация: 19.04.2010
Сообщений: 2,702
|
![]()
Удобно использовать таблицы типа Memory.
|
![]() |
![]() |
![]() |
#4 |
Форумчанин
Регистрация: 08.07.2010
Сообщений: 679
|
![]()
Из сообщения motorway не ясно как вы собираетесь удалять то ли куку, то ли запись в БД и по какому событию ... Проблема в том, что вы не сможете определить, когда пользователь закроет браузер.
Последовательность здесь такая: 1. Постоянно обновляете в базе дату и время текущего действия пользователя 2. Устанавливаете условное время сессии. Т.е. время по истечении которого как вы думаете, если у пользователя не обновлялось время открытия страницы, он покинул сайт - обычно 5-15 минут. Можно задать свою переменную, можно использовать глобальную из php. 3. Ну и затем все просто ... время последней записи в БД + время сессии ... если оно меньше, чем "сейчас" то определяете. то пользователь онлайн (удобно делать прямо в БД например if (last_visit_datetime + INTERVAL 10 MINUTE > NOW()) ... возвращаем флаг 'онлайн') ... в любом случае получится лишь условно определить это значение, с погрешностью, которую вы сами зададите |
![]() |
![]() |
![]() |
#5 |
Форумчанин
Регистрация: 08.07.2010
Сообщений: 679
|
![]()
Кстати для больших объемов данных и пользователей действительно лучше использовать какие-нибудь быстрые хранилища данных типа Memory
Если собираетесь считать количество пользователей онлайн, то лучше запустить либо crontab, либо создать event в БД, которые допустим раз в минуту будут пересчитывать значения и сохранять в каком-нибудь кэше |
![]() |
![]() |
![]() |
#6 |
Форумчанин
Регистрация: 04.01.2010
Сообщений: 230
|
![]()
До способа Consor20 я уже доходил, и это не красиво, я не видел ни один сайт в котором это было так реализовано. А вот прочитав пост motorway подумал, а что если просто проверять существование сессионной переменной на сервере? У пользователя сессионный идентификатор удаляется при закрытие окна браузера, или через 20 после закрытия ( уже не помню...), и вопрос в том удаляется ли сессионный идентификатор на сервере вместе с этим идентификатором у пользователя?
Ещё слышал что можно на сокетах как то сделать... |
![]() |
![]() |
![]() |
#7 |
Старожил
Регистрация: 28.01.2009
Сообщений: 21,000
|
![]()
на многих форумах, так же как я заметил у ВКонтакте, используется метод что последнее действие пишется в БД, и потом считаются онлайн в течении N минут с момента последнего действия.
ибо сервер по сути даже и не узнает что клиент вырубил браузер(разве что сайт вечно будет стучатся на сервер и сообщать что он открыт у клиента, но это не очень вариант) Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел. Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите. |
![]() |
![]() |
![]() |
#8 |
Форумчанин
Регистрация: 04.01.2010
Сообщений: 230
|
![]()
Ясно.. а какое время лучше выставить? 2 минуты норм будет?
|
![]() |
![]() |
![]() |
#9 |
Форумчанин
Регистрация: 08.07.2010
Сообщений: 679
|
![]()
2 минуты мало, я вам написал, что лучше 5-15 минут .. здесь все зависит от сайта. Например , чтобы написать что-нибудь на форум или прочитать большой текст может уйти гораздо больше времени
|
![]() |
![]() |
![]() |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Регистрация пользователей | cheef | PHP | 57 | 04.05.2010 19:11 |
Система принятия решения (Экспертная система) | daranton | Microsoft Office Excel | 4 | 01.05.2010 17:55 |
Авторизация пользователей | Айвенго | Microsoft Office Access | 2 | 28.05.2009 10:55 |