Хранение информации



Работа с Сессиями Хранение в Базе Данных

Скрытые возможности работы с сессиями  Март 18, 2021 – 11:54
сессий в базе данных
Возможности работы с сессиями в продукте значительно расширились. Появилась возможность в качестве хранилища сессии использовать memcached, не блокирующая и виртуальная сессия. Остановимся подробнее на этих возможностях.

1. Хранение сессий в memcached

Для включения хранения сессий в memcached необходимо в /bitrix/php_interface/dbconn.php или /local/php_interface/dbconn.php установить следующие константы

define('BX_SECURITY_SESSION_MEMCACHE_HOST', 'localhost'); define('BX_SECURITY_SESSION_MEMCACHE_PORT', 11211);

либо в случае использования unix-socket

define('BX_SECURITY_SESSION_MEMCACHE_HOST', 'unix:/path/to/memcached.sock'); define('BX_SECURITY_SESSION_MEMCACHE_PORT', 0);

После этого, включить в модуле проактивной защиты, хранение сессий в базе данных. В результате получаем хранение сессий в memcached средствами ядра.
Данный способ хранения сессий дает следующие преимущества:

- нет необходимости следить за количеством старых сессий на нагруженном проекте
- возможность разделять сессии между серверами в кластере
- возможность использовать не ожидающую получения блокировки сессию
- возможность использовать виртуальные сессии

В целом хранение сессий в БД имеет такие же преимущества, но в отличие от хранения сессий в memcached, значительно более медленное. Поэтому рекомендуем использовать хранение сессий в memcached, взамен хранения сессий в БД.

2. Не блокирующие сессии.

Одной из проблем больших проектов с множественными аякс запросами, является частые блокировки хитов одного пользователя на ожидание получения блокировки сессии. Особенно это актуально для КП, где во многих местах прикрепленные к сущностям файлы отдаются пользователю, после проверки прав на php. Поэтому на страницах возможно построение лесенки, из за ожидания получения блокировки сессии. Включить не блокирующую сессию можно установкой константу, до подключения ядра продукта.

define('BX_SECURITY_SESSION_READONLY', true);

После этого сессия читается из memcached или БД не ожидая получения блокировки. Важно помнить, что при использование данной константы по завершению хита, сессия не будет записана. Что может привести к потере данных сохраненных в рамках хита в сессии. Внутри продукта данная функциональность используется например при отдаче отдаче файлов.

Source: dev.1c-bitrix.ru

Похожие публикации:

  1. Файловая Система Хранения Данных
  2. Безопасное Хранение Данных
  3. Хранение Паролей в Базе Данных
  4. Сервер для Хранения Базы Данных
  5. Хранение Изображений в Базе Данных