Статус пользователя (online/offline)

Тема в разделе "PHP", создана пользователем yeaahhh, 16 июн 2010.

Статус темы:
Закрыта.
Модераторы: latteo
  1. yeaahhh

    yeaahhh

    Регистр.:
    8 май 2008
    Сообщения:
    278
    Симпатии:
    11
    Друзья. Подскажите, пожалуйста, каким способом идёт проверка на присутствие пользователя на сайте..
    Полагаю, что с помощью fsockopen, опираясь на ip пользователя?
    А какой порт нужно проверять? И может быть ещё есть какие-то ньюансы?
    Заранее большое спасибо)
     
  2. dandandan

    dandandan

    Регистр.:
    7 авг 2008
    Сообщения:
    991
    Симпатии:
    267
    Каждый пользователь помечается кукой или сессией. Эта сессия заносится в БД с временем последнего обращения к страницам пользователем. При открытии пользователем любой страницы в БД обновляется время последнего обращения юзера к сайту.

    Каждые 5 - 10 мин по крону или любым другим способом удаляются пользователи у которых истекло это время. Оставшиеся пользователи считаются Он-лайн !!!
     
  3. diavolic

    diavolic

    Регистр.:
    17 мар 2010
    Сообщения:
    522
    Симпатии:
    102
    если нужна проверка на онлайн в риал тайм, как в асе, здесь только через сокеты. если нет, то способ описан выше.
     
    yeaahhh нравится это.
  4. stealtheos

    stealtheos Создатель

    Регистр.:
    28 апр 2010
    Сообщения:
    19
    Симпатии:
    1
    через сокеты в реал тайм не получиться потому что сокет разрывается после каждого обращения
    можно только отследить если пользователь качает файл
    так что самое грамотное это через куки, сессии или через БД. Вообще из этого я бы выбрал сессии.
     
    yeaahhh нравится это.
  5. adamsmith

    adamsmith Писатель

    Регистр.:
    26 сен 2008
    Сообщения:
    6
    Симпатии:
    2
    Соккеты мне кажется излишни. Это ладно, если несколько человек, а если несколько сотен? Раз в 5-10 минут проверить, ушел пользователь или нет (через сессию+база), не так много занимает ресурсов, чем если бы в реальном времени скрипты висели в памяти и ждали, когда же пользователь свалит с сайта. ИМХО, сессия, в сессию уник ид, логин, время, в базе такую же таблицу, и сверять время периодически по крону или через php скрипт, который выполняется тоже в определенные промежутки(когда например заходит 100-й пользователь). При переходе пользователя просто обновлять в этой таблице время последнего захода. Просто и не особо ресурсоемко.
     
    yeaahhh нравится это.
  6. dandandan

    dandandan

    Регистр.:
    7 авг 2008
    Сообщения:
    991
    Симпатии:
    267
    Для проверки постоянно пользователя онлайн возможно пойдет мультиплексор от дклаб.

    Dklab_multiplexor — это инструмент, который позволяет держать одновременно сотни тысяч долгоживущих открытых HTTP-соединений с сервером. Например, если на вашем сайте находится одновременно несколько сот тысяч посетителей, каждый из них может быть связан с сервером постоянным соединением, установленным из JavaScript. Это, например, полезно при организации онлайн-чатов или мгновенных уведомлений.

    http://dklab.ru/lib/dklab_multiplexor/
     
    yeaahhh нравится это.
  7. yeaahhh

    yeaahhh

    Регистр.:
    8 май 2008
    Сообщения:
    278
    Симпатии:
    11
    stimka, кинь, пожалуйста.. буду очень благодарен..
     
Статус темы:
Закрыта.