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

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

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

  1. Зарегистрировать сервис MongoDbSessionHandler;
  2. Сконфигурирвать его под конфигурацией framework.session.handler_id.

Чтобы увидеть, как конфигурируется схожий обработчик, см. How to Use PdoSessionHandler to Store Sessions in the Database.

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

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

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

Эта документация является переводом официальной документации Symfony и предоставляется по свободной лицензии CC BY-SA 3.0.