1

(簡略化して) ステージ マシンとライブ マシンがあるとします。両方とも、prod 環境を使用してテストする必要があります。残念ながら、私たちのステージ マシンでは、利用可能な memcache インスタンスが 1 つあります。ライブでは、3 つの memcache インスタンスがあります。Memcache 拡張機能を使用する必要があります。ライブで構成するには、次のような構成を使用しています。

services:
  memcache.servers:
    class: Memcache
    calls:
      - [ addserver, ["one.mc.live", %memcache.server.port% ] ]
      - [ addserver, ["two.mc.live", %memcache.server.port% ] ]
      - [ addserver, ["three.mc.live", %memcache.server.port% ] ]

  common_cache:
    class: Doctrine\Common\Cache\MemcacheCache
    calls:
        - [ setNamespace, [%memcache.namespace%] ] #from parameters.yml
        - [ setMemcache, [@memcache.servers] ]

さらに、ライブではドクトリン接続にスレーブを追加していますが、ステージングではそうではありません。ライブではログをリモート サービスに送信したいのですが、ステージでは送信しません (ただし、他のすべてのロガーは同じように構成する必要があります!)。ステージ上の URL は、「app_stage.php」プレフィックスなしでアクセスできる必要があります。明らかに、これには parameters.yml を使用して解決できるよりも、もう少し (複雑な) マシン固有の構成が必要です。

この種のマシン固有の構成を機能させるために、最初に config_prod.yml によってインポートされる config_local.yml (バージョン管理されていない) を使用し、config_prod.yml は prod の実行に必要なものを追加します。Monolog は一度定義されたロガー チェーンを「忘れる」ことはないため、この試みはログ記録に失敗します (メインのロガーを単純に「オーバーライド」することはできません。古いロガーはまだ存在し、重複したログが生成されます)。

バージョン管理から config_prod.yml を削除し、基本的な製品構成を持つが、たとえばロガーを定義しない (バージョン管理された) config_stage.yml を追加しました。ローカルで変更された config_prod.yml はそれをインポートし、環境の構成の詳細を追加します。

構成の変更を追跡できないため、git の下に config_prod.yml がないのは気分が悪いです。ローカル テスト用に独自の config_prod.yml を作成する方法を設計者に伝える必要があります。すべてのライブ インスタンスで config_prod (+ parameters.yml) を作成する必要があります。

これは物事を行う方法ですか、それとも Symfony2 構成ドキュメントで何かを見逃したのですか?

4

0 に答える 0