Как использовать MongoDbSessionHandler для сохранения сессий в базе данных MongoDB

Дата обновления перевода 2023-06-29

Как использовать MongoDbSessionHandler для сохранения сессий в базе данных MongoDB

Хранилище сессий Symfony по умолчанию записывает информацию о сессиях в файлы. Некоторые средние и большие по размеру веб-сайты используют базу данных NoSQL под названием MongoDB для того, чтобы хранить значения сессий, а не файлы, так как базы данных проще использовать и масштабировать в мульти-серверном окружении.

Symfony имеет встроенное решение для хранилища сессий DB NoSQL под названием MongoDbSessionHandler. Чтобы использовать это, вам нужно:

A) Зарегистрировать сервис MongoDbSessionHandler;

B) Сконфигурирвать его под конфигурацией framework.session.handler_id.

Чтобы увидеть, как конфигурируется схожий обработчик, см. Как использовать PdoSessionHandler для хранения сессий в DB.

Установка сбора MongoDB

Вам не нужно ничего делать для того, чтобы инициализировать сбор сессии. Однако, вам может захотеться добавить оглавление, чтобы улучшить производительность сбора мусора. Из оболочки MongoDB:

1
2
use session_db
db.session.ensureIndex( { "expires_at": 1 }, { expireAfterSeconds: 0 } )