2011-11-13 38 views
3

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

+1

你的出发点都可以在这里:http://php.net/manual/en/function.session -set-save-handler.php –

+1

@ItayMoav这与symfony 2有什么关系? sf2会议使用它吗? – HappyDeveloper

+1

我写的这只是一个起点。我很确定引擎盖下的Symphiny也使用$ _SESSION。 –

回答

3

我已经完成了与Mandango,但它应该很容易转换使用例如Doctrine的MongoDB ODM或类似。我开了一个头,但还没有经过测试,我相当肯定它应该是不同的传递到蒙戈实例;-)我添加了占位符或示例代码酌情如:

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

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

代码是在Github上https://github.com/richsage/Symfony2-MongoDB-session-storage - PR值得欢迎,当你得到它的工作!

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

+0

哇谢谢,我希望我能理解代码。我回家时会查看它。 – HappyDeveloper

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/

+0

问题是,这解决了这个问题,但我很想添加一个小小的评论:session.handler.mongo,mongo.connection和mongo应该放在服务部分,而mongo.session.options放在参数部分 –

相关问题