За последние 24 часа нас посетили 16375 программистов и 1677 роботов. Сейчас ищут 899 программистов ...

Как реализовать online/offline?

Тема в разделе "Прочие вопросы по PHP", создана пользователем allowance, 21 сен 2010.

  1. allowance

    allowance Активный пользователь

    С нами с:
    19 янв 2010
    Сообщения:
    196
    Симпатии:
    0
    Как в теории реализовать онлайн движок. Т.е как определить пользователь в онлайне или в офлайне?

    Допустим, есть база данных пользователей, делаем ячеку online в таблице members. Если пользователь залогинился то обновляем ячейку online c нуля на единицу. А если пользователь делает logout то обнавляем ячейку online на 0.
    А если пользователь просто закрывает окно браузера, то что тогда делать?

    Или как можно всё это проще реализовать?
     
  2. Апельсин

    Апельсин Активный пользователь

    С нами с:
    20 мар 2010
    Сообщения:
    3.645
    Симпатии:
    2
    С помощью поиска по форуму.
     
  3. Ensiferum

    Ensiferum Активный пользователь

    С нами с:
    11 июл 2010
    Сообщения:
    1.292
    Симпатии:
    0
    Адрес:
    из секты поклонников Нео
    есть у body событие onUnload, возникает, когда закрываешь страницу.
    А вообще можно реализовать так: при посещении страницы в бд юзеров в поле "время" заносится текущее время. А для подсчета он-лайн вытаскивае время пользователей и сравниваем с текущим временем. Если разница более пяти минут, то:
    - человек находится на странице более пяти минут;
    - человек ушел.

    Второе более вероятней, чем первое, но даже если и находится он более пяти минут, то, перейдя на другую страницу, он вновь окажется в онлайне
     
  4. Апельсин

    Апельсин Активный пользователь

    С нами с:
    20 мар 2010
    Сообщения:
    3.645
    Симпатии:
    2
    это лоховское начинание :)
    у меня чудненько работает на мускуле, дергая табличку на каждой странице. По-моему, до 10ти минут видит юзера на странице, потом он значится уже как оффлайн.
     
  5. Ensiferum

    Ensiferum Активный пользователь

    С нами с:
    11 июл 2010
    Сообщения:
    1.292
    Симпатии:
    0
    Адрес:
    из секты поклонников Нео
    Апельсин
    ты мой пост до конца прочел или только первое предложение?
     
  6. Апельсин

    Апельсин Активный пользователь

    С нами с:
    20 мар 2010
    Сообщения:
    3.645
    Симпатии:
    2
    Ensiferum
    прочел-прочел. Второе в тему, по первому - возразил.
     
  7. Ensiferum

    Ensiferum Активный пользователь

    С нами с:
    11 июл 2010
    Сообщения:
    1.292
    Симпатии:
    0
    Адрес:
    из секты поклонников Нео
    Апельсин
    Первым я ответил на вопрос А если пользователь просто закрывает окно браузера, то что тогда делать?
     
  8. [vs]

    [vs] Суперстар
    Команда форума Модератор

    С нами с:
    27 сен 2007
    Сообщения:
    10.559
    Симпатии:
    632
    Поставить пользователю поле lastAction с таймом последнего действия, и
     
  9. Апельсин

    Апельсин Активный пользователь

    С нами с:
    20 мар 2010
    Сообщения:
    3.645
    Симпатии:
    2
    Ensiferum
    на вопрос А если пользователь просто закрывает окно браузера, то что тогда делать?
    неплохо бы ответить "ничего", да и хватило бы, так как вторая часть твоего ответа отработала бы за двоих :)
    Смысл еще события обрабатывать
     
  10. Ensiferum

    Ensiferum Активный пользователь

    С нами с:
    11 июл 2010
    Сообщения:
    1.292
    Симпатии:
    0
    Адрес:
    из секты поклонников Нео
    В некоторых чатах видел реализацию =)
     
  11. alpinist777

    alpinist777 Активный пользователь

    С нами с:
    29 сен 2009
    Сообщения:
    17
    Симпатии:
    0
    На некоторых ресурсах открытая страница держит пользователя в режиме on-line сколь угодно долго.
    Там реализованы Ajax-запросы, которые грузят новые сообщения пользователя, обновляют статус его записей и пр. Срабатывают с определенным интервалом по времени.
    По всей видимости, сервер, обрабатывая такие запросы, обновляет и некоторое "поле lastAction". Поэтому пока страница открыта - пользователь считается он-лайн.
    Лично мне такой способ не кажется самым правильным (описанный случай - это, по-моему, статус "пользователь уснул"), но как дополнение ко всем случаям, описанным выше, вполне подходит :)
     
  12. tommyangelo

    tommyangelo Старожил

    С нами с:
    6 дек 2009
    Сообщения:
    2.549
    Симпатии:
    0
    Адрес:
    Мариуполь
    ппц, ну неужели не видно, что тема полгода как умерла?