Как реализовать функцию «кто онлайн» в PHP? - PullRequest
4 голосов
/ 02 февраля 2009

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

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

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

Ответы [ 5 ]

7 голосов
/ 02 февраля 2009

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

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

4 голосов
/ 02 февраля 2009

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

0 голосов
/ 05 августа 2016

Я думаю, вы можете сделать это просто в php

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

  1. в системе входа анализировать имя пользователя и пароль
  2. затем, если имя пользователя и пароль совпадают, запустите запрос для выбора из таблицы user и получите его
  3. тогда получите статус
  4. Обновить пользователя, установить статус в 1, это означает, что онлайн
  5. Когда вы нажимаете кнопку «Выйти», анализируете имя пользователя и пароль сеанса, выбираете запрос от пользователя tbl и получаете статус, а затем устанавливаете статус в 0, это означает, что он не подключен
0 голосов
/ 07 октября 2011

Есть много способов реализовать это.

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

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

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

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

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

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

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

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

0 голосов
/ 10 сентября 2011

Я думал сделать это так:

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

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

...