Symfony. Сессии

Столкнулся сегодня с интересной вещью. Надо посмотреть сколько залогиненых пользователей, и кто именно сейчас онлайн. Естесственно все сводицца к тому, что надо завести отдельную табличку с сессиями и повесить все на стандартную встроенную функцию session_set_save_handler() php для манипуляций и сбора мусора. Ага, просто, но symfony не ищет легких путей!

С сессиями она работает прекрасно, но господа французы-создатели-symfony посчитали, что держать сессионые файлы где-то в папке самого php, неприлично. Вместо этого они создают файлы где-то в закромах самого фреймворка. Также предлагается создать стандартную таблицу для хранения сессии не только в файле, но и в базе. Что ж, сделано, в конфиге все прописано, очищаем кэш, запускаем, и… Apache (!) выдает exception! Да, не symfony, не php, а именно Apache! :) Вот так постарались на славу. В логах об авторизации и создании сессии есть только одна запись и ничего об ошибках запроса в базу!) Залезаем на форум - а там народ плачет, рыдает, - ну никак ни у кого не выходит работать с базой. В итоге нашел более менее приемлимое решение: создал таблицу (между прочим в мануале даже не описана структура таблицы), в которой автоматически создается та или иная запись со всеми нужными переменными.  Запускаем, логинимся, и… оно заработало, первая запись есть! Что самое интересное, записи в таком же формате, что и сессионные файлы в самом php. Удобно считать, и даже можно извлекать и парсить какие-то данные. Правда еще не понял каким образом она собирает мусор, но, похоже, что никаким, так что придется подчищать его вручную, например, при логине очередного пользователя.

Вот такие пироги ;)



Нет комментариев

Комментарий: