Хранение PHP-сессий в базе данных

Подход, позволяющий хранить PHP-сессии в базе данных вместо файлов

Начну сразу с причин, по которым я пишу эту статью. Я периодически просматриваю лог запросов, по которому люди попадают сюда, и вот один из запросов — хранить php сессию в mysql. Итак, как же хранить PHP-сессии в базе данных? На самом деле, в этом нет ничего сложного: в PHP есть одна полезная функция — session_set_save_handler — которая и выполняет всю грязную [...]

← Вернуться к полной версии записи «Хранение PHP-сессий в базе данных»…

Автор: ; опубликовано в: MySQL, PHP; метки: MySQL, PHP, база данных, сессия
19
Мар
2008

RSS Комментарии к статье «Хранение PHP-сессий в базе данных» (21)  »

  1. Dok

    Оч нужная статья, но ничерта не ясно…

  2. Dok, задавайте вопросы, будем разбираться… На самом деле всё не так страшно, как оно кажется :-)

  3. mp3 мелодии

    Не че не получилось. Будем разбираться сами!
    Тем немениее спасибО!

  4. m104

    Автору респект!
    Собирался сам изобретать велосипед!:)

  5. babr

    Еще одна подробная статья, выполненная на отличном уровне.

    Сам в свое время разбирался в этом.
    Очень хорошо, что теперь есть куда посмотреть и вспомнить если что :)

    Спасибо вам!

    С уважением, Савунов Василий (babr)

  6. андрей

    А какие приемущества хранить сессии в базе перед файлами?

  7. Самые разные… :-)

    Например, если Вам нужно посчитать количество пользователей в онлайне. ID всех сессий априорно Вы знать не можете, а с БД такой запрос — пара пустяков: SELECT COUNT(DISTINCT `user_id`) FROM `sessions` WHERE `user_id` != 0.

    Прибить сессию (сессии) тоже проще через БД.

    Или, допустим, сайт знакомств: Вам нужно найти пользователей, удовлетворяющих каким-то условиям и находящихся сейчас на сайте. С БД это проще.

  8. Soviet

    Vladimir, начал разбираться с Вашим изобретением. Не все до конца понятно. Не могли бы вы дать мне небольшую консультацию по данному скрипту. Зараннее спасибо.

  9. Soviet

    Вобщем дело такое. Необходимо реализовать выше указанный Вами в комментарии пример – поиск с параметром «показать тех, кто онлайн». Опыт программирования у меня не сильно большой, поэтому прошу прощения если вопросы покажутся глупыми.

    Для начала опишу свои деуствия:
    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) в каком порядке я должен вызвать функции для добавления сессий в базу/удаления сессий из базы? если вам несложно прокомментируйте параметры отдаваемые функциям.

    А то глянул и стало страшно. Но реализовывать как-то надо а лучших вариантов чем Ваш я не нашел.
    Зараннее огромное спасибо.

  10. MB

    Данный подход описан в книге»PHP5 для профессионалов» (авторы Эд Леки-Томпсон, Хьяо Айде-Гудман и др., издательство wrox)

Пожалуйста, не используйте эту форму для комментирования! Данная форма предназначена исключительно для ботов.

Оставить комментарий к записи «Хранение PHP-сессий в базе данных»

Ваш e-mail не будет опубликован. Обязательные поля помечены *

*

Можно использовать следующие HTML-теги и атрибуты: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

Оставляя комментарий, вы выражаете своё согласие с Правилами комментирования.

Подписаться, не комментируя

गते गते पारगते पारसंगते बोधि स्वाहा