На сайте регистрируются пользователи, заходят в пользовательскую часть сайта используя логин-пароль. В БД MySQL sessions пишутся активные сессии этих пользователей, чтобы подсчитывать сколько пользователей сейчас онлайн и других подобных целей. Как получить доступ и управлять пользовательскими сессиями в PHP 5.6 ? Вот например я хочу получить доступ к данным сессии 7dkb0qepg9v84dg9nm5gn0c4t0, id которой хранится в моей таблице как это сделать? И как держать актуальными данные в таблице sessions, чтобы она содержала только сессии пользователей, которые в данный момент на сайте? Может перебирать все сессии в цикле foreach, а в сессию каждому пользователю писать Код (Text): $_SESSION['last_access'] = time(); И затем Код (Text): foreach ($sessions_from_mysql_table as $session){ if( (time() - $_SESSION['last_access']) > 120 ) // Delete session from mysql tbl } Как лучше сделать, подскажите. Сайт достаточно большой, поэтому хотелось бы чтобы код давал оптимальную нагрузку на сервер. Может есть какой-нибудь хороший готовый класс для этих целей? PHP на сервере 5.6.30
Как всё запутанно в твоих знаниях... Если у тебя есть список сессий в базе - удаление можно раз в минуту по крону делать одним простым запросом. Файлы сессии самой пхп машины это просто файлы и тебе совершенно не нужно в них влезать.
Перед махинациями важно понимать, что СУБД не используется в качестве базового хранилища сессий. @Ganzal упомянул о файлах сессий, соответственно, нужно помнить (и проверить), что можно заставить хранить сессии помимо стандартного метода, например в редисе, мемкеше, той же реляционной СУБД и т.д. В определенных проектах и задачах первые 2 варианта вполне применимы. Хранение сессий в бд это вынужденный шаг которого можно избежать и нужно избежать. СУБД предназначена совершенно для других целей. В случае если (у тс скорее всего это так) в базу пишутся ID сессий лишь для внутренних нужд и не являются их основным хранилищем, реализовывать на основе их записи (и перезаписи) отслеживания онлайн-пользователей можно как угодно: вы ограничены только архитектурой приложения и структурой самой базы данных. Структуру данных вы не предоставили. Тем не менее, в простой реализации вашей задачи (её решении на основе реляционной СУБД) используется обычно дополнительная "таблица" онлайн-пользователей (в "нагруженных проектах"). Туда пишется ID сессии и, что особенно важно, сохраняется время апдейта или создания записи. Соответственно, вы просто регулярно трете записи старше скажем 5-ти минут и совершаете их перезапись в случае активности пользователя (открытие новой страницы и т.п.). Таким образом вы получаете актуальное количество пользователей на сайте.