Как стать автором
Обновить

Codeigniter — выносим сессии в Memcached

Время на прочтение1 мин
Количество просмотров972
Доброго времени суток, хабросообщество!

Когда дело доходит до оптимизации веб-приложения — то борьба идет за каждый запрос.
Поэтому наконец-то дошли руки оптимизировать и работу с сессиями. Раньше все хранилось в базе:

$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-сервером происходит через обертку, оформленную в виде модели.

Все файлы можно взять здесь.

Теги:
Хабы:
Всего голосов 12: ↑11 и ↓1+10
Комментарии4

Публикации

Истории

Ближайшие события

15 – 16 ноября
IT-конференция Merge Skolkovo
Москва
22 – 24 ноября
Хакатон «AgroCode Hack Genetics'24»
Онлайн
28 ноября
Конференция «TechRec: ITHR CAMPUS»
МоскваОнлайн
25 – 26 апреля
IT-конференция Merge Tatarstan 2025
Казань