Могу ли я использовать MongoDB для хранения сессий в Symfony 2? - PullRequest
3 голосов
/ 13 ноября 2011

Можно ли использовать MongoDB для хранения сессий в Symfony 2? Если да, то как?

Ответы [ 2 ]

8 голосов
/ 13 ноября 2012

Просто потому, что я думаю, что вопрос на самом деле не ответил. В Symfony 2.1 теперь возможно хранить данные сеанса в MongoDB с MongoDbSessionHandler, который включен в компонент HttpFoundation.

Основная конфигурация config.yml выглядит так:

session.handler.mongo:
    class: Symfony\Component\HttpFoundation\Session\Storage\Handler\MongoDbSessionHandler
    arguments: [@mongo, %mongo.session.options%]

mongo.connection:
    class: MongoDoctrine\MongoDB\Connection
    factory_service: doctrine.odm.mongodb.document_manager
    factory_method: getConnection
    calls:
       - [initialize, []]
mongo:
    class: Mongo
    factory_service: mongo.connection
    factory_method: getMongo

mongo.session.options:
    database: app_session
    collection: session

framework:
    session:
        handler_id: session.handler.mongo

Подробнее здесь: http://blog.servergrove.com/2012/11/05/storing-sessions-in-mongodb-with-symfony2/

3 голосов
/ 14 ноября 2011

Я сделал это с Mandango, но он должен быть легко конвертируемым, чтобы использовать, например, ODM от Doctrine MongoDB или аналогичный.Я начал, но это не было проверено, и я вполне уверен, что ему нужно передать что-то другое экземпляру Mongo ;-) Я добавил местозаполнители или пример кода, где это уместно, например:

public function __construct(\Mongo $con, ...)

, который, я уверен, нужно будет изменить: -)

Код на Github на https://github.com/richsage/Symfony2-MongoDB-session-storage - пиар приветствуется, когда вы его заработаете!

По сути,Я расширил класс NativeSessionStorage и настроил различные методы для обработки вставки, извлечения и обновления записей сеансов в моей базе данных Mongo, где это необходимо.Класс должен быть настроен как служба с добавлением соответствующих зависимостей, а затем эта служба передается в конфигурацию сеанса.Et voila: -)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...