2013-04-04 10 views
6

私はSymfony2の設定を変更するスクリプトを用意しており、先に進む前に新しい設定を認識する必要があります(特にdbal接続を追加する)。スクリプトの実行中に設定を強制的にリロードする方法はありますか?symfony2で設定をリロードする

+0

スクリプトが実行されている間にカーネルを再起動できるのであれば、スクリプトを実行しているときにサービスコンテナ全体を再初期化しなければならないということは基本的にはapp.phpを見てください。 – Hannes

答えて

10

更新:Symfony2の中でそれを行うことは本当に不可能です「更新」段落

秒見、あなたがコンフィギュレーションをリロードすることはできませんが、オンザフライでパラメータを設定することができます。あなたがコンフィギュレーションをリロードする(多分app/console cache:warmup --env=prod --no-debug続く)

app/console cache:clear --env=prod --no-debug

でキャッシュをクリアする必要があるので、本番モードで

は、すべてのもの(偶数の構成)が、キャッシュされています。開発モードでは、shutdown()を試してからboot()Symfony\Component\HttpKernel\Kernel、またはloadClassCacheとすることができますが、これはすべてあなたの望むものではありません。

設定ファイルにはどのような変更が加えられましたか?おそらく、異なる環境で異なるファイルを使用するか、または単純なWebサービスやコントローラ内から読み取られた静的ファイルを介して、これらの変更を取得する他の方法を検討する必要があります。

更新

私はあなたはできるが

$container->setParameter('parameter', value); 

経由オンザフライあなたのコンテナの設定パラメータを設定することを考え出しthe Symfony2 documentationを見てください。

+0

私はその場で追加のデータベース接続を作成し、config.ymlファイルに追加します(マルチテナント設定の一部として)。 –

+0

私はちょうど私の質問を更新しました。これはあなたを助けるかもしれません。 – akluth

5

私の回答はおそらく非常に遅く到着しますが、他の人にとっては役に立ちます。

"prod"環境用のsymfonyキャッシュは "app/cache/prod /"フォルダに保存されています(Twig/"twig /"サブフォルダでPHPで翻訳されたTwigテンプレート、 "annotations /"サブフォルダ内の注釈、 ..設定パラメータ、app * ProjectContainer.phpファイルなど)。

あなたができることは、設定スクリプトがparameters.ymlを変更したときに、appProdProjectContainer.phpを削除することもできます。あなたのSymfonyアプリケーションを使用する次のユーザーは、応答時間が少し長くなりますが、新しい設定パラメータが考慮されてキャッシュされます。

関連する問題