Чтобы расширить ответ Тома, вы можете создать таблицу, которая будет отслеживать сеансы в базе данных. Как минимум, поля должны быть session_id, ip_address, activity_time. Назовите их как хотите. Вам понадобится функция, которая выполняется при каждой загрузке страницы, которая соответствует записи в session_id и ip_address. Если соответствующая запись не существует, вы создаете ее; если совпадение сделано, то обновите время.
Несколько предостережений:
1) Получить правильный IP-адрес может быть сложно, особенно с пользователями AOL и / или прокси-пользователями. Вам нужно искать заголовки X_Forwarded_For. Если они существуют, для пользователя используйте этот адрес, в противном случае используйте $ _SERVER ['REMOTE_ADDR']. Я бы посоветовал найти X_Forwarded_For для вашей настройки, потому что я не уверен, что он доступен для всех установок
1a) если вы не получите правильный IP-адрес, некоторые пользователи будут создавать новую запись при каждом просмотре страницы
2) Вам нужен способ удалить устаревшие сеансы. Я предлагаю как часть функции, которая обновляет время активности, он также проверяет наличие любого времени активности, которое больше 5 минут (я использую 15 минут), и, если это так, удаляет соответствующую запись.
Тогда все, что вам нужно сделать, - это просто подсчитать в таблице, и это даст вам достаточно точное представление о количестве пользователей, которые в данный момент находятся в сети. С очень небольшим количеством кода вы можете использовать его во многих случаях. На сайте знакомств, который я создал, я добавил дополнительный столбец в таблицу и смог отобразить значок онлайн рядом с пользователями, которые вошли в систему, то же самое в результатах поиска, чтобы показать пользователям, выполняющим поиск, какие пользователи были в данный момент онлайн. с небольшим воображением это может быть использовано для еще нескольких сценариев.
Кроме того, с помощью функции членства, когда пользователь входит в систему, вы можете обновить таблицу сеансов, чтобы показать, что они являются участником, а не гостем, и если пользователь выходит из системы, вы можете удалить сеанс из таблицы. Лучше всего, когда пользователь выходит из системы, но остается на сайте, где вы генерируете новый сеанс в целях безопасности. Это немного больше, чем вы просили.