【发布时间】:2014-07-29 16:55:22
【问题描述】:
我正试图通过我的应用程序清空 Symfony 2 缓存,就像我在做 php app/console cache:clear 一样。
我尝试了许多不同的解决方案,例如:
//solution 1
$process = new Process('php '.__DIR__.'/../../../../../app/console cache:clear');
$process->setTimeout(3600);
$process->run();
//solution 2
$input = new StringInput(null);
$output = new NullConfigurationOutput();
$command = new CacheClearCommand();
$command->setContainer($container);
$command->run($input, $output);
//solution 3
$container->get('cache_clearer')->clear($container->getParameter('kernel.cache_dir'));
我也试过rm -Rf缓存文件夹。
它们都没有完全正常工作,因为我遇到了很多错误。以下错误是我在解决方案 2 上遇到的错误(这似乎是最好的):
无法启动会话:已由 PHP 启动(已设置 $_SESSION)。
似乎 Symfony 正在尝试在渲染过程中重建页面或重新启动应用程序。
有人如何通过一些 php 代码清除缓存?
编辑: 由于我的路由系统,我实际上正在尝试重新生成缓存。我制作了一个捆绑包,它采用 symfony 2 路由并添加了为 SEO 目的重写它的可能性(例如:我有一个指向 /category 的 front_category 路由,使用这个捆绑包我可以将它重写为 category-seo-optimized。 html)。
如果我在需要特定参数(例如 ID)的路线上,我需要为其创建一个特殊路线以便重写它。例如,对于 /category/3,我需要创建一个名为 category_3 的路由,并且......为了让 symfony 知道我已经更改了路由系统,我必须清除缓存。
【问题讨论】: