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

То что касается флеша, но не касается ВКонтакте API. Например проблемы при создании прыгающего мячика.
Аватара пользователя
Dmitry
Сообщения: 70
Зарегистрирован: 05 дек 2009, 13:51

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

Сообщение Dmitry »

Как мне узнать кто из юзеров сейчас в приложении? База юзеров есть
Аватара пользователя
совесть
Разработчик
Разработчик
Сообщения: 156
Зарегистрирован: 22 дек 2009, 23:58

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

Сообщение совесть »

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



у апи есть сессии, с которыми мне надо разобраться(мало что понял из документации), там наверно проще будет.
Noise Gate
Сообщения: 691
Зарегистрирован: 28 апр 2010, 12:34

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

Сообщение Noise Gate »

В принципе, можно сделать поле в базе данных, где указывать время последнего запроса. С большой долей вероятности те, у кого это время максимально приближено к текущему, будут онлайн.
Аватара пользователя
Влад
Модератор
Модератор
Сообщения: 654
Зарегистрирован: 29 апр 2010, 22:24

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

Сообщение Влад »

У меня на пример поле, где по умолчанию 0, если юзер делает что-то то ставится 1, на крон поставлена выдача статуса "0" каждую минуту, вроде всё элементарно и работает безотказно!
Аватара пользователя
Dmitry
Сообщения: 70
Зарегистрирован: 05 дек 2009, 13:51

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

Сообщение Dmitry »

вот метод Влада мне нравится
Аватара пользователя
Влад
Модератор
Модератор
Сообщения: 654
Зарегистрирован: 29 апр 2010, 22:24

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

Сообщение Влад »

Dmitry чем проще механизм, тем надёжнее его работа!
donatas
Сообщения: 14
Зарегистрирован: 11 июн 2010, 12:53

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

Сообщение donatas »

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

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

$curtime    = strtotime('now')-600;SELECT * FROM users_online WHERE lastvisit>$curtime ORDER BY lastvisit DESC LIMIT 100
еще и будут отсортированы по времени :)
Аватара пользователя
bodnar
Модератор
Модератор
Сообщения: 1399
Зарегистрирован: 03 апр 2010, 06:41

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

Сообщение bodnar »

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

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

Сообщение donatas »

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

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

хотя думаю на маленьких базах разницы заметно не будет :)
Аватара пользователя
совесть
Разработчик
Разработчик
Сообщения: 156
Зарегистрирован: 22 дек 2009, 23:58

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

Сообщение совесть »

приложение очень всем понравилось, все решили в него играть.

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

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