Планирование разработки веб-приложения LAMP. Какие общие стратегии я могу использовать для отображения количества пользователей, зарегистрированных на моем сайте? Я хочу иметь возможность точно отображать что-то вроде «Сейчас в сети 1000 пользователей» или «Пользователь Джон Доу сейчас в сети».
Будет задействована база данных. Поэтому каждый раз, когда кто-то регистрируется на сайте, вы можете иметь поле в таблице пользователя для last_login. И тогда может быть сценарий, который выполняет запрос к таблице этого пользователя, чтобы подсчитать количество строк last_login за последний х промежуток времени. Возможно, было бы неплохо кэшировать это и повторно заполнить этот кеш каждые z времени, а затем вытащить его из этого кеша, чтобы противостоять выполнению запроса по таблице пользователя для каждого запроса. Таким образом, база данных + какая-то система кеширования.
Это позволит вам легко хранить ваши данные сеанса в базе данных (просто включите его в файле config.php). Затем вы можете запросить количество идентификаторов сеанса в таблице сеансов вашей базы данных.
Вот информация для класса сеанса CodeIgniter, чтобы вы могли увидеть, как его использовать: Code Session Session Session
Здесь также есть ссылка на форумы CodeIgniter, в которых более подробно описано, как именно это реализовать: CodeIgniter Forum
Это довольно легко сделать, но не может быть точным. Html, являющийся апатридом, не знает, будет ли пользователь по-прежнему смотреть на вашу страницу или ушел.
Если вы хотите регистрировать анонимных и зарегистрированных пользователей, вы можете использовать cookie отслеживания с коротким таймаутом, скажем, пять минут и иметь эту ссылку на файлы cookie для базы данных активных сеансов.
Если вы используете свою базу данных для хранения информации о сеансе, вы можете легко запросить таблицу сеансов и узнать, сколько уникальных сеансов там хранится.
У вас есть какая-то последняя доступная запись времени в БД и запись о том, что человек активен. Затем запросите БД для тех пользователей, которые были активны за последние 5 минут или около того. Подойдет вам около ок.