2009-02-02 2 views
4

Как можно реализовать функцию «кто в сети» с помощью PHP? Конечно, это будет связано с использованием временных меток, и после просмотра таблицы сеансов phpBB может потребоваться сохранение последних посещений в базе данных.Как реализовать функцию «кто в сети» в PHP?

Является ли это эффективным методом или есть лучшие способы реализации этой идеи?

Редактировать: Я сделал это сообщество wiki случайно, потому что я был еще новичком в Stack Overflow в то время.

+0

почему это такое сообщество вики? : D – andyk

ответ

6

Использование базы данных для отслеживания всех зарегистрированных пользователей - это единственный способ сделать это.

Что бы я сделал, вставьте строку с информацией о пользователе и меткой времени в таблицу или когда кто-то войдет в систему и обновит временную метку каждый раз, когда есть активность с этим пользователем. И я бы предположил, что все пользователи, которые имели активность за последние 5 минут, в настоящее время находятся в сети.

+0

«И обновляйте временную метку каждый раз, когда есть активность с этим пользователем». Итак, каждый раз, когда пользователь открывает страницу, мы обновляем таблицу? – Sobiaholic

4

В зависимости от того, как вы реализуете (и если выполняете) сеансы, вы можете использовать один и тот же носитель для получения количества активных пользователей. Например, если вы используете файловую модель сеанса, просто сканируйте каталог, содержащий файлы сеанса, и верните количество файлов сеанса. Если вы используете базу данных для хранения данных сеанса, верните количество строк в таблице сеанса. Конечно, это предполагает, что вы довольны значением тайм-аута, которое имеет ваша сессия (т. Е. Если ваш сеанс имеет тайм-аут в 30 минут, вы получите список активных пользователей за последние 30 минут).

0

Я думал сделать это следующим образом:

Когда пользователь входит в систему, его ID_пользователя и метки времени будут вставлены в таблицу. Затем каждые 5 минут я вызову php-скрипт через ajax, чтобы проверить, вошел ли пользователь в систему, и если да, обновите его метку времени в таблице.

Если пользователь не вошел в систему, просто удалите его запись.

0

Существует множество способов реализации этого.

Вы можете реализовать это просто путем опроса.

Проверять клиентов определенным интервалом и подсчитывать количество ответов клиентов.

Это значение может быть использовано как количество пользователей онлайн.

Я думаю, что лучший способ - использовать технологию push вместо проверки онлайн-пользователей, определенных каждые x секунд или x минут.

Он просто позволяет серверу знать, когда люди входят и уходят по событию.

Таким образом, сервер просто увеличивает и уменьшает переменную подсчета онлайн-пользователей, когда события происходят от клиентов.

Я рекомендую Socket.IO, APE посмотреть.

Также есть много других, таких как XMPP, Jabber.

0

я думаю, что вы можете сделать это просто в PHP

создавать пользовательские таблицы состоят из, имя пользователя, пароль и статус (1,0)

  1. в системе авторизации анализа имя пользователя и пароль
  2. затем если имя пользователя и пароль совпадают, запустите запрос для выбора из пользователя таблицы и введите его
  3. затем получите статус
  4. Обновить пользователя, указать статус пользователя 1, это означает онлайн
  5. При нажатии кнопки выхода из системы, анализировать имя сеанса и пароль, и выберите запрос от пользователя TBL и получил статус, а затем установить статус в 0, это означает, что отсутствует

 Смежные вопросы

  • Нет связанных вопросов^_^