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)