Хранение PHP-сессий в базе данных
Подход, позволяющий хранить PHP-сессии в базе данных вместо файлов
Начну сразу с причин, по которым я пишу эту статью. Я периодически просматриваю лог запросов, по которому люди попадают сюда, и вот один из запросов — хранить php сессию в mysql. Итак, как же хранить PHP-сессии в базе данных? На самом деле, в этом нет ничего сложного: в PHP есть одна полезная функция — session_set_save_handler — которая и выполняет всю грязную [...]
← Вернуться к полной версии записи «Хранение PHP-сессий в базе данных»…
Автор: Vladimir; опубликовано в: MySQL, PHP; метки: MySQL, PHP, база данных, сессияМар
2008
Комментарии к статье «Хранение PHP-сессий в базе данных» (21) »
Пожалуйста, не используйте эту форму для комментирования! Данная форма предназначена исключительно для ботов.
Оставить комментарий к записи «Хранение PHP-сессий в базе данных»
गते गते पारगते पारसंगते बोधि स्वाहा
Меня зовут Владимир, я программист-фрилансер, специализирующийся на Web-программировании и програмировании под Linux.
По совместительству занимаюсь администрированием LAMP/LNMP-серверов и техническим переводом.


Оч нужная статья, но ничерта не ясно…
Dok, задавайте вопросы, будем разбираться… На самом деле всё не так страшно, как оно кажется
Не че не получилось. Будем разбираться сами!
Тем немениее спасибО!
Автору респект!
Собирался сам изобретать велосипед!:)
Еще одна подробная статья, выполненная на отличном уровне.
Сам в свое время разбирался в этом.
Очень хорошо, что теперь есть куда посмотреть и вспомнить если что
Спасибо вам!
С уважением, Савунов Василий (babr)
А какие приемущества хранить сессии в базе перед файлами?
Самые разные…
Например, если Вам нужно посчитать количество пользователей в онлайне. ID всех сессий априорно Вы знать не можете, а с БД такой запрос — пара пустяков:
SELECT COUNT(DISTINCT `user_id`) FROM `sessions` WHERE `user_id` != 0.Прибить сессию (сессии) тоже проще через БД.
Или, допустим, сайт знакомств: Вам нужно найти пользователей, удовлетворяющих каким-то условиям и находящихся сейчас на сайте. С БД это проще.
Vladimir, начал разбираться с Вашим изобретением. Не все до конца понятно. Не могли бы вы дать мне небольшую консультацию по данному скрипту. Зараннее спасибо.
Конечно могу! Задавайте вопросы
Вобщем дело такое. Необходимо реализовать выше указанный Вами в комментарии пример – поиск с параметром «показать тех, кто онлайн». Опыт программирования у меня не сильно большой, поэтому прошу прощения если вопросы покажутся глупыми.
Для начала опишу свои деуствия:
1) создал класс по подключению к базе – Persistent
2) полностию скопировал приведенный вами код
3) заинклудил файлик в свой скрипт
написал там примерно такое:
$session_manager = new SessionManager();
$Persistent = new Persistent;
$Persistent->connect(); – подключение к базе
$sm = &SessionManager::instance();
session_start();
теперь вопросы:
1) возможно ли использование данного класса если у меня кроме данных об авторизации в сессиях передаются так-же и другие переменные не относящиеся к работе с юзерами
2) класс Session функция gettable() – имя таблицы прописывается вместо TABLE_SESSION?
3) в каком порядке я должен вызвать функции для добавления сессий в базу/удаления сессий из базы? если вам несложно прокомментируйте параметры отдаваемые функциям.
А то глянул и стало страшно. Но реализовывать как-то надо а лучших вариантов чем Ваш я не нашел.
Зараннее огромное спасибо.
Данный подход описан в книге»PHP5 для профессионалов» (авторы Эд Леки-Томпсон, Хьяо Айде-Гудман и др., издательство wrox)