Как я могу получить список всех активных сеансов PHP на сервере и получить к ним доступ из одного экземпляра пользователя?
Мотивирующий случай отображает список всех активных в настоящее время пользователей на сайте, где имена пользователей хранятся в сессии PHP каждого пользователя.
Примечание. Я знаю, что могу создать собственное состояние через базу данных (или даже файловую систему), но я ищу способ использовать встроенные механизмы сеанса PHP.
Увидев ответы, хотя это возможно, это не значит, что вы должны это делать. Формат, в котором хранятся сеансы, не документирован и может меняться в любое время (даже между младшими версиями).
Правильный способ сделать это – реализовать собственный обработчик сеанса . На самом деле это не так сложно.
Список сеансов
<?php print_r(scandir(session_save_path())); ?>
Проверить конкретную сессию
<?php session_start(); echo (file_exists(session_save_path().'/sess_'.session_id()) ? 1 : 0); ?>
Последний файл сеанса сеанса
<?php session_start(); echo filectime(session_save_path().'/sess_'.session_id()); ?>
Как уже было сделано к смерти, уже не рекомендуется обрабатывать сеансы таким образом, но если это необходимо, они будут работать без необходимости проверять / изменять путь хранения сеанса (полезно, если вы переключитесь на другой сервер с другая конфигурация).
Вы не можете использовать сеансы для этого, вам нужно будет хранить онлайн-пользователей в БД и просто устанавливать временную метку или аналогичную информацию, отображать всех активных пользователей за 5 минут, а также удалять их записи.
Сеансы хранятся в виде файлов в вашем временном каталоге сеанса. Вы должны найти это в php.ini (или с помощью phpinfo()
). Это все сеансы. Вы должны проверить время файла, чтобы узнать, активны ли они за последние x минут.