2.8.15. Обробник зберігання сесії

Зберігання сесій у Memcache(d) або Redis може деякою мірою прискорити роботу сайту за рахунок того, що дані зберігатимуться не на диску, а в оперативній пам’яті, де швидкість доступу до даних вища.

За обробник зберігання сесії відповідає параметр session.save_handler. Він визначає ім’я обробника, який використовується для зберігання та вилучення даних, пов’язаних з сесією.

  1. Відкрийте «Налаштування PHP».
  2. У полі «session.save_handler» виберіть потрібний обробник та збережіть зміни:
    • «зберігання сесій в файлах» — сесії зберігатимуться у файлах у стандартному системному каталозі (значення за замовчуванням).
    • «зберігання сесій в Memcache» — сесії зберігатимуться в кеші в оперативній пам’яті (доступно за наявності замовленої додаткової послуги Memcache(d) або на тарифах бізнес-хостингу).
    • «зберігання сесій в Redis» — сесії зберігатимуться в кеші в оперативній пам’яті (доступно за наявності замовленої додаткової послуги Redis або на тарифах бізнес-хостингу).
  3. Зачекайте приблизно 10-15 хвилин, поки зміни вступлять в силу.

При зберіганні сесій у Memcache або Redis у коді сайту не повинно бути команд session_save_path('/tmp') та ini_set('session.save_path', '/tmp'), які перевизначають шлях зберігання сесій, або в них замість /tmp повинен бути шлях до сокету зі сторінки відповідної додаткової послуги.

Якщо шлях зберігання сесій вказано неправильно, на сайті будуть такі помилки:

  • У старих версіях PHP:
    PHP Fatal error: session_start() [function.session-start]: Failed to initialize storage module: memcache (path: /tmp)
  • У нових версіях PHP:
    Warning: session_start(): Failed to write session lock: CONNECTION FAILURE
    Warning: session_start(): Failed to write session lock: SERVER HAS FAILED AND IS DISABLED UNTIL TIMED RETRY
    Warning: session_start(): Unable to clear session lock record
    Warning: session_start(): Failed to read session data: memcached (path: /tmp)
Зміст