1

Symfony2 アプリケーションで Doctrine MongoDB ODM を使用しています。

safe: 3デフォルトのコミット オプション ( やなど)を設定するにはどうすればよいfsync: trueですか?

理想的には、YAML 構成ファイルでこれを行うことができますが、ドキュメントはこれが不可能であることを示しているようです

Configuration オブジェクトを取得できれば、そこに defaultCommitOptions (のような)を設定できるはずfsyncですが、どのように、いつ、どこでそれを行うべきかわかりません。

4

1 に答える 1

2

PR #114の時点で、これには最上位の構成オプションdefault_commit_optionsを使用できます。デフォルトでは、バンドルは ODM と同じ値である を使用します{safe: true}。サポートされているオプションの簡単な例を次に示します。

doctrine_mongodb:
    default_commit_options:
        safe: 2      # boolean or positive integer for replication
        fsync: false # boolean 
        timeout: 10  # integer >= -1

詳細については、DI 拡張機能の構成クラスと単体テストを参照してください。

古いバージョンの DoctrineMongoDBBundle では、Configuration クラスがサービス コンテナーに登録されているため、独自に実装できます。これを行うための 2 つのオプションは、独自のバンドルにコンパイラ パスを作成し、サービス定義にメソッド呼び出しを追加するか、それが複雑すぎる場合は、ランタイム コードでサービス インスタンスにアクセスしてsetDefaultCommitOptions()直接呼び出すことです。

対象となるコードは、DoctrineMongoDBExtensionloadDocumentManager()メソッドにあります。そこから、各 Configuration インスタンスに割り当てられたサービス ID を確認できます (DocumentManager ごとに 1 つ存在します)。メソッドを介して DM の構成を取得することもできると思いますgetConfiguration()

于 2012-06-04T14:26:43.203 に答える