Дата последнего изменения: 26.05.2021
По умолчанию сессия в PHP поддерживает последовательный доступ. Это означает, что параллельные хиты, которые используют сессию, блокируются и выстраиваются в очередь.
Это удобно для разработчиков, но не всегда хорошо для пользователей, так как интерфейс и отклик приложения может быть с задержками. Встаёт задача уменьшить количество блокировок сессий.
Один из вариантов решения как избежать блокировки - это написать SessionHandlerInterface и не делать там просто блокировку. Но этот вариант не подходит, так как есть большое количество существующих использований в коде Bitrix Framework и партнеров.
Выбран другой путь:
Хранилище для KernelSession-сессии -- это шифрованные cookies.
Хранилище для cold-сессии -- это обычная сессия, принцип работы, как и раньше, поэтому данные могут храниться в Redis, Memcache, БД.
Чтобы включить разделенный режим сессии, нужно в bitrix/.settings.php
изменить session[mode]
на separated. И добавить 'kernel' => 'encrypted_cookies'
, и 'lifetime' => 14400,
.
Примеры можно посмотреть здесь.