Сессии, Redis и Memcached
Стандартные сессии PHP блокируют параллельные запросы одного пользователя, что решается режимом только для чтения (BX_SECURITY_SESSION_READONLY) или разделенным хранением (mode => separated). Перенос сессий и кеша в Redis или Memcached настраивается в .settings.php и необходим при горизонтальном масштабировании приложения на несколько веб-серверов.
Прогресс хранится в этом браузере. Войдите, чтобы сохранить его в аккаунте.
Что нужно понимать
-
1
Хранение сессий
-
2
Hot/Cold режим
-
3
Сессии в Redis/Memcached
-
4
Memcached
-
5
Redis
-
6
Интеграция с Битрикс
Материалы
Официальная документация
-
Сессия в разделенном режиме Новая дока
-
NoSQL Новая дока
Проверь себя
Третья вкладка каталога у одного пользователя висит, хотя запросы к базе быстрые. Где причина?
В блокировке сессии: PHP держит lock на файл сессии до конца хита, и запросы одного пользователя идут по очереди. Найти хиты, которые в сессию не пишут, и поставить им BX_SECURITY_SESSION_READONLY.
Перенесли сессии в Redis, очередь вкладок не исчезла. Почему?
RedisSessionHandler тоже ставит блокировку setnx на ключ <sid>.lock и ждёт до минуты. Очередь убирают разделённый режим и READONLY; Redis нужен, когда нод больше одной.
Что сломается, если поставить BX_SECURITY_SESSION_READONLY в init.php для всего сайта?
Сессия перестанет сохраняться в конце хита: корзина, авторизация и всё, что в неё пишется, пропадёт. Константа ставится точечно, для хитов, которые только читают.
Два сайта переехали на один Redis, и на одном показались данные другого. Где искать?
В параметре sid секции cache в .settings.php: у сайтов он должен различаться, иначе ключи кеша совпадают.
Не сходится?
Спросите ассистента BXMax: он знает документацию и материалы сайта по этой теме.
Знаете материал лучше?
Предложите ссылку: после проверки она появится в этом разделе.
Войти, чтобы предложить