2011-11-13 8 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などを使用するには簡単に変換可能でなければなりません。私はスタートを切ったが、それはテストされていないと私はそれが私が適切例えば、プレースホルダやサンプルコードを追加しましたMongoのインスタンスに別の何かを;-)渡す必要がありますかなり確信している:

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

私はかなり変更する必要があります:-)

コードはGithubでhttps://github.com/richsage/Symfony2-MongoDB-session-storageにアップされています - あなたはそれが動作するようになると歓迎!

基本的には、NativeSessionStorageクラスを拡張し、必要に応じてMongoデータベースのセッションレコードの挿入、取得、更新を処理するさまざまなメソッドを調整しました。クラスは、適切な依存関係が追加されたサービスとして構成する必要があり、このサービスはセッション構成に渡されます。 Et voila :-)

+0

ありがとう、私はコードを理解できることを願っています。私が家に帰ると、私はそれをチェックします。 – HappyDeveloper

8

私は質問が本当に答えられていないと思うからです。 Symfony 2.1では、HttpFoundationコンポーネントに含まれているMongoDbSessionHandlerを使用してMongoDBにセッションデータを格納することが可能になりました。

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 

もっとここで読む:config.ymlの

主な構成は次のようになりますhttp://blog.servergrove.com/2012/11/05/storing-sessions-in-mongodb-with-symfony2/

+0

問題はこれが問題を解決したことですが、私はsession.handler.mongo、mongo.connection、mongoは、サービスセクションに、mongo.session.optionsは、パラメータセクション –

関連する問題