Доброго времени суток, хабросообщество!
Когда дело доходит до оптимизации веб-приложения — то борьба идет за каждый запрос.
Поэтому наконец-то дошли руки оптимизировать и работу с сессиями. Раньше все хранилось в базе:
Настройки сессий можно назвать стандартными, за исключением названия таблицы.
После неоднократного просмотра профайлера, было решено вынести всю работы с сессиями в Memcached.
Зачем? Да хотя бы для того, чтобы избавится от лишних апдейтов и селектов при генерации страницы.
Что же было сделано? Был написан класс MY_Session, переопределяющий ключевые методы стандартного класса для работы с сессиями.
Измененные методы:
Суть изменений заключается лишь в проверке что мы используем — СУБД или Memcached, и, соответственно, откуда брать и куда писать данные сессии.
Некоторые уточнения — в моем случае опция работы сессий через memcached не была вынесена в общий конфиг, т.е. она начинает работать при sess_use_database = FALSE
Сами настройки соединения с memcached вынесены в одноименный конфиг — config/memcached.php.
Работа с memcached-сервером происходит через обертку, оформленную в виде модели.
Все файлы можно взять здесь.
Когда дело доходит до оптимизации веб-приложения — то борьба идет за каждый запрос.
Поэтому наконец-то дошли руки оптимизировать и работу с сессиями. Раньше все хранилось в базе:
$config['sess_use_database'] = TRUE;
Настройки сессий можно назвать стандартными, за исключением названия таблицы.
После неоднократного просмотра профайлера, было решено вынести всю работы с сессиями в Memcached.
Зачем? Да хотя бы для того, чтобы избавится от лишних апдейтов и селектов при генерации страницы.
Что же было сделано? Был написан класс MY_Session, переопределяющий ключевые методы стандартного класса для работы с сессиями.
Измененные методы:
- sess_read()
- sess_write()
- sess_create()
- sess_update()
- sess_destroy()
Суть изменений заключается лишь в проверке что мы используем — СУБД или Memcached, и, соответственно, откуда брать и куда писать данные сессии.
Некоторые уточнения — в моем случае опция работы сессий через memcached не была вынесена в общий конфиг, т.е. она начинает работать при sess_use_database = FALSE
Сами настройки соединения с memcached вынесены в одноименный конфиг — config/memcached.php.
Работа с memcached-сервером происходит через обертку, оформленную в виде модели.
Все файлы можно взять здесь.