Узнать кто онлайн в приложении
Узнать кто онлайн в приложении
Как мне узнать кто из юзеров сейчас в приложении? База юзеров есть
Re: Узнать кто онлайн в приложении
можно создать глобальную сессию в пхп и туда писать всех юзеров, и проверять, посылает ли он запрос серверу. если ответа нету, то оффлайн.
у апи есть сессии, с которыми мне надо разобраться(мало что понял из документации), там наверно проще будет.
у апи есть сессии, с которыми мне надо разобраться(мало что понял из документации), там наверно проще будет.
-
- Сообщения: 691
- Зарегистрирован: 28 апр 2010, 12:34
Re: Узнать кто онлайн в приложении
В принципе, можно сделать поле в базе данных, где указывать время последнего запроса. С большой долей вероятности те, у кого это время максимально приближено к текущему, будут онлайн.
Re: Узнать кто онлайн в приложении
У меня на пример поле, где по умолчанию 0, если юзер делает что-то то ставится 1, на крон поставлена выдача статуса "0" каждую минуту, вроде всё элементарно и работает безотказно!
Re: Узнать кто онлайн в приложении
вот метод Влада мне нравится
Re: Узнать кто онлайн в приложении
Dmitry чем проще механизм, тем надёжнее его работа!
Re: Узнать кто онлайн в приложении
cron каждую минуту? о_О +каждую минуту обновлять всех юзеров?которые даже не заходили месяц в приложение? это как забивать микроскопом гвозди ))
имхо правильнее будет,как писали выше - добавить поле в которое писать текущее время при каждом обращении клиента к серверу
когда нужно получить список "онлайн" юзеров - делается запрос из базы, где в условиях описывается параметр последнего обращения - брать все,где он больше "текущее время - 1мин"
что-то типа:
еще и будут отсортированы по времени
имхо правильнее будет,как писали выше - добавить поле в которое писать текущее время при каждом обращении клиента к серверу
когда нужно получить список "онлайн" юзеров - делается запрос из базы, где в условиях описывается параметр последнего обращения - брать все,где он больше "текущее время - 1мин"
что-то типа:
Код: Выделить всё
$curtime = strtotime('now')-600;SELECT * FROM users_online WHERE lastvisit>$curtime ORDER BY lastvisit DESC LIMIT 100
Re: Узнать кто онлайн в приложении
а изобрести запрос который всем пользователям в поле online поставит 0 невозможно? 1 запрос к бд в минуту, пустяки.donatas писал(а):каждую минуту обновлять всех юзеров?которые даже не заходили месяц в приложение?
Другой вопрос это то что пользователь 2 секунды назад сделал действие и теперь минуту ничего делать не собирается, и он практически всегда буит offline, поэтому сравнивать время предпочтительнее)
чтобы выяснить кто онлайнее?donatas писал(а):еще и будут отсортированы по времени
Re: Узнать кто онлайн в приложении
1 запрос - да,а вот запуск крона каждую минуту - это уже даст о себе знать, + не каждый хостер даст это делать,минимум минут 5-10 разрешит))1 запрос к бд в минуту, пустяки.
в Вашем варианте
1 - запрос - ставим всем нули в базе
2 - при заходе каждый юзер ставит "1" при обращении
3 - делаем выборку
------ итого 3 запроса
в моем
1 - юзер записывает данные
2 - делаем выборку
------ итого 2 запроса ))
нет,но зачастую после выяснения "кто в онлайне" - эта инфа куда-то выводится, например в чате,в таком случае можно например по имени их отсортироватьчтобы выяснить кто онлайнее?
.... ORDER BY user_name DESC LIMIT 100
хотя думаю на маленьких базах разницы заметно не будет
Re: Узнать кто онлайн в приложении
приложение очень всем понравилось, все решили в него играть.
итого, где-то по 50000 запросов в минуту к базе. хостинг вряд ли крутой, поэтому бах, и всё.
по-моему, проще создать глобальную сессию и пихать всех в массив, кто не запрашивает скажем 1 минуту, того удаляем из массива.
итого, где-то по 50000 запросов в минуту к базе. хостинг вряд ли крутой, поэтому бах, и всё.
по-моему, проще создать глобальную сессию и пихать всех в массив, кто не запрашивает скажем 1 минуту, того удаляем из массива.