我可以使用MongoDB在Symfony 2中存储会话吗?

时间:2011-11-13 01:17:15

标签: php mongodb symfony session nosql

是否可以使用MongoDB在Symfony 2中存储会话?如果是这样,怎么样?

2 个答案:

答案 0 :(得分:8)

仅仅因为我认为问题没有得到真正回答。在Symfony 2.1中,现在可以使用包含在HttpFoundation组件中的MongoDbSessionHandler在MongoDB中存储会话数据。

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/

答案 1 :(得分:3)

我已经使用Mandango完成了这项工作,但它应该可以轻松转换为使用例如Doctrine的MongoDB ODM或类似工具。我开始了,但它还没有经过测试,我很确定它应该传递给Mongo实例不同的东西;-)我在适当的地方添加了占位符或示例代码,例如:

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

我相当肯定需要改变: - )

代码在https://github.com/richsage/Symfony2-MongoDB-session-storage的Github上播出 - 当你开始工作时PR欢迎!

基本上,我已经扩展了NativeSessionStorage类,并调整了各种方法来处理在适当的Mongo数据库中插入,检索和更新会话记录。需要将类配置为服务,并添加适当的依赖项,然后将此服务传递给会话配置。瞧瞧: - )