Pull to refresh

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

Reading time1 min
Views936
Доброго времени суток, хабросообщество!

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

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

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

Tags:
Hubs:
+10
Comments4

Articles