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


Vladimir не могли бы вы оставить свою аську, или почту чтобы связаться?
Или стукнуть мне?
Контактная информация здесь.
[...] Продолжение статьи «Хранение PHP-сессий в базе данных». [...]
Хранение PHP-сессий в кэше xCache
в PHP5 session_write_close следует вызывать из деструктора. В PHP4 – деструкторов еще не было, конечно
Все понял, очень понравилось. Но в упор не понимаю, что должны делать методы load() и save(),точнее какие данные получать и как. Можно пример кода класса Persistent?
load()должен загружать данные сессии из таблицы, используя идентификатор сессии ($sid) в качестве ключа (SELECT session_data FROM session WHERE session_id = '{$sid}').save(), соответственно, сохранять эти данные в базу.PS — того кода, к сожалению, не осталось
Поэтому при сохранении сессии важно знать, является ID новым или нет (если ID новый, то для сохранения будет использоваться INSERT, если существующий — то UPDATE; по большому счету можно обойтись одним REPLACE, однако это не особо эффективное решение).
А почему бы здесь использовать завернутый в специально обученную функцию INSERT … ON DUPLICATE KEY UPDATE? Понятно, что такой синтаксис только для mysql, но другие СУБД не всем нужны и там такой функционал тоже вполне реализуем, если не ошибаюсь.
Не хватает только реализации класса Persistent для MySQL.
А смысл? Всё равно каждый использует свои классы абстракции/ORM для доступа к БД.