Страница 1 из 2

Узнать кто онлайн в приложении

Добавлено: 10 июн 2010, 20:49
Dmitry
Как мне узнать кто из юзеров сейчас в приложении? База юзеров есть

Re: Узнать кто онлайн в приложении

Добавлено: 10 июн 2010, 22:49
совесть
можно создать глобальную сессию в пхп и туда писать всех юзеров, и проверять, посылает ли он запрос серверу. если ответа нету, то оффлайн.



у апи есть сессии, с которыми мне надо разобраться(мало что понял из документации), там наверно проще будет.

Re: Узнать кто онлайн в приложении

Добавлено: 11 июн 2010, 09:13
Noise Gate
В принципе, можно сделать поле в базе данных, где указывать время последнего запроса. С большой долей вероятности те, у кого это время максимально приближено к текущему, будут онлайн.

Re: Узнать кто онлайн в приложении

Добавлено: 11 июн 2010, 20:41
Влад
У меня на пример поле, где по умолчанию 0, если юзер делает что-то то ставится 1, на крон поставлена выдача статуса "0" каждую минуту, вроде всё элементарно и работает безотказно!

Re: Узнать кто онлайн в приложении

Добавлено: 12 июн 2010, 09:59
Dmitry
вот метод Влада мне нравится

Re: Узнать кто онлайн в приложении

Добавлено: 12 июн 2010, 18:27
Влад
Dmitry чем проще механизм, тем надёжнее его работа!

Re: Узнать кто онлайн в приложении

Добавлено: 13 июн 2010, 00:08
donatas
cron каждую минуту? о_О +каждую минуту обновлять всех юзеров?которые даже не заходили месяц в приложение? это как забивать микроскопом гвозди ))
имхо правильнее будет,как писали выше - добавить поле в которое писать текущее время при каждом обращении клиента к серверу
когда нужно получить список "онлайн" юзеров - делается запрос из базы, где в условиях описывается параметр последнего обращения - брать все,где он больше "текущее время - 1мин"
что-то типа:

Код: Выделить всё

$curtime    = strtotime('now')-600;SELECT * FROM users_online WHERE lastvisit>$curtime ORDER BY lastvisit DESC LIMIT 100
еще и будут отсортированы по времени :)

Re: Узнать кто онлайн в приложении

Добавлено: 13 июн 2010, 06:39
bodnar
donatas писал(а):каждую минуту обновлять всех юзеров?которые даже не заходили месяц в приложение?
а изобрести запрос который всем пользователям в поле online поставит 0 невозможно? 1 запрос к бд в минуту, пустяки.
Другой вопрос это то что пользователь 2 секунды назад сделал действие и теперь минуту ничего делать не собирается, и он практически всегда буит offline, поэтому сравнивать время предпочтительнее)
donatas писал(а):еще и будут отсортированы по времени :)
чтобы выяснить кто онлайнее? :lol: :lol: :lol:

Re: Узнать кто онлайн в приложении

Добавлено: 13 июн 2010, 11:35
donatas
1 запрос к бд в минуту, пустяки.
1 запрос - да,а вот запуск крона каждую минуту - это уже даст о себе знать, + не каждый хостер даст это делать,минимум минут 5-10 разрешит))

в Вашем варианте
1 - запрос - ставим всем нули в базе
2 - при заходе каждый юзер ставит "1" при обращении
3 - делаем выборку
------ итого 3 запроса
в моем
1 - юзер записывает данные
2 - делаем выборку
------ итого 2 запроса ))
чтобы выяснить кто онлайнее?
нет,но зачастую после выяснения "кто в онлайне" - эта инфа куда-то выводится, например в чате,в таком случае можно например по имени их отсортировать
.... ORDER BY user_name DESC LIMIT 100

хотя думаю на маленьких базах разницы заметно не будет :)

Re: Узнать кто онлайн в приложении

Добавлено: 13 июн 2010, 14:32
совесть
приложение очень всем понравилось, все решили в него играть.

итого, где-то по 50000 запросов в минуту к базе. хостинг вряд ли крутой, поэтому бах, и всё.

по-моему, проще создать глобальную сессию и пихать всех в массив, кто не запрашивает скажем 1 минуту, того удаляем из массива.