|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
06.08.2011, 20:49 | #1 |
Форумчанин
Регистрация: 04.01.2010
Сообщений: 229
|
Система онлайн пользователей
Не подскажите ли как вобще реализуется такая штука как онлайн/офлайн пользователи? в гугле не нашел...
|
06.08.2011, 21:27 | #2 |
Участник клуба
Регистрация: 28.06.2009
Сообщений: 1,950
|
Когда пользователи заходят на сайт, обычно в БД или файл записывается информация о них и отслеживаются действия за посл. время. Обычно ставится кука. А когда она удаляется, то считается, что пользователь вышел из системы
|
06.08.2011, 22:28 | #3 |
Старожил
Регистрация: 19.04.2010
Сообщений: 2,702
|
Удобно использовать таблицы типа Memory.
|
06.08.2011, 22:32 | #4 |
Форумчанин
Регистрация: 08.07.2010
Сообщений: 679
|
Из сообщения motorway не ясно как вы собираетесь удалять то ли куку, то ли запись в БД и по какому событию ... Проблема в том, что вы не сможете определить, когда пользователь закроет браузер.
Последовательность здесь такая: 1. Постоянно обновляете в базе дату и время текущего действия пользователя 2. Устанавливаете условное время сессии. Т.е. время по истечении которого как вы думаете, если у пользователя не обновлялось время открытия страницы, он покинул сайт - обычно 5-15 минут. Можно задать свою переменную, можно использовать глобальную из php. 3. Ну и затем все просто ... время последней записи в БД + время сессии ... если оно меньше, чем "сейчас" то определяете. то пользователь онлайн (удобно делать прямо в БД например if (last_visit_datetime + INTERVAL 10 MINUTE > NOW()) ... возвращаем флаг 'онлайн') ... в любом случае получится лишь условно определить это значение, с погрешностью, которую вы сами зададите |
06.08.2011, 22:35 | #5 |
Форумчанин
Регистрация: 08.07.2010
Сообщений: 679
|
Кстати для больших объемов данных и пользователей действительно лучше использовать какие-нибудь быстрые хранилища данных типа Memory
Если собираетесь считать количество пользователей онлайн, то лучше запустить либо crontab, либо создать event в БД, которые допустим раз в минуту будут пересчитывать значения и сохранять в каком-нибудь кэше |
07.08.2011, 08:33 | #6 |
Форумчанин
Регистрация: 04.01.2010
Сообщений: 229
|
До способа Consor20 я уже доходил, и это не красиво, я не видел ни один сайт в котором это было так реализовано. А вот прочитав пост motorway подумал, а что если просто проверять существование сессионной переменной на сервере? У пользователя сессионный идентификатор удаляется при закрытие окна браузера, или через 20 после закрытия ( уже не помню...), и вопрос в том удаляется ли сессионный идентификатор на сервере вместе с этим идентификатором у пользователя?
Ещё слышал что можно на сокетах как то сделать... |
07.08.2011, 10:08 | #7 |
Старожил
Регистрация: 28.01.2009
Сообщений: 21,000
|
на многих форумах, так же как я заметил у ВКонтакте, используется метод что последнее действие пишется в БД, и потом считаются онлайн в течении N минут с момента последнего действия.
ибо сервер по сути даже и не узнает что клиент вырубил браузер(разве что сайт вечно будет стучатся на сервер и сообщать что он открыт у клиента, но это не очень вариант) Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел. Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите. |
07.08.2011, 11:38 | #8 |
Форумчанин
Регистрация: 04.01.2010
Сообщений: 229
|
Ясно.. а какое время лучше выставить? 2 минуты норм будет?
|
07.08.2011, 14:39 | #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 |