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)
Зміст

    (1)