是否可以使用MongoDB在Symfony 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数据库中插入,检索和更新会话记录。需要将类配置为服务,并添加适当的依赖项,然后将此服务传递给会话配置。瞧瞧: - )