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

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

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

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

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

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

  1. Astral

    Vladimir не могли бы вы оставить свою аську, или почту чтобы связаться?
    Или стукнуть мне?

  2. [...] Продолжение статьи «Хранение PHP-сессий в базе данных». [...]

  3. Marat

    в PHP5 session_write_close следует вызывать из деструктора. В PHP4 – деструкторов еще не было, конечно

  4. Nikita

    Все понял, очень понравилось. Но в упор не понимаю, что должны делать методы load() и save(),точнее какие данные получать и как. Можно пример кода класса Persistent?

    • load() должен загружать данные сессии из таблицы, используя идентификатор сессии ($sid) в качестве ключа (SELECT session_data FROM session WHERE session_id = '{$sid}').
      save(), соответственно, сохранять эти данные в базу.

      PS — того кода, к сожалению, не осталось :-(

  5. neo

    Поэтому при сохранении сессии важно знать, является ID новым или нет (если ID новый, то для сохранения будет использоваться INSERT, если существующий — то UPDATE; по большому счету можно обойтись одним REPLACE, однако это не особо эффективное решение).
    А почему бы здесь использовать завернутый в специально обученную функцию INSERT … ON DUPLICATE KEY UPDATE? Понятно, что такой синтаксис только для mysql, но другие СУБД не всем нужны и там такой функционал тоже вполне реализуем, если не ошибаюсь.

  6. Sheva

    Не хватает только реализации класса Persistent для MySQL.

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

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

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

*

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

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

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

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