在Symfony2中强制配置重新加载

Eir*_*sen 9 symfony

我有一个脚本可以更改Symfony2配置,并且需要在继续之前了解新配置(特别是添加dbal连接).有没有办法在脚本执行期间强制重新加载配置?

ale*_*oze 16

更新:您无法重新加载配置,但您可以即时设置参数,请参阅第二个"更新"段落

在Symfony2中实际上不可能做到这一点.

在生产模式下,所有内容(甚至是配置)都被缓存,因此您必须清除缓存

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

(可能后跟一个app/console cache:warmup --env=prod --no-debug)

重新加载配置.在开发模式下,你可以尝试用shutdown()后跟一个 boot()来自Symfony\Component\HttpKernel\Kernel或可能loadClassCache-但所有这一切是不是真的是你想要的.

究竟对配置文件进行了哪些更改?也许您应该为不同的环境使用不同的文件,或者考虑使用任何其他方法来获取这些更改(通过简单的Web服务,甚至是从Controller中读取的静态文件).

更新:

我发现你可以通过动态设置容器配置参数

$container->setParameter('parameter', value);
Run Code Online (Sandbox Code Playgroud)

看看Symfony2文档.


Dav*_*lot 5

我的回答可能很晚才到,但对其他人可能有用.

"prod"环境的Symfony缓存存储在"app/cache/prod /"文件夹中并包含许多内容(在"twig /"子文件夹中用PHP翻译的Twig模板,"annotations /"子文件夹中的注释和...配置参数,app*ProjectContainer.php文件,以及许多其他内容).

所以你可以做的是:当配置脚本更改parameters.yml时,它也可以删除appProdProjectContainer.php.下一次使用Symfony应用程序的用户将面临更长的响应时间,但新配置参数将被考虑并缓存.