2011-11-13 82 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放在參數部分 –

相關問題