Php 以编程方式清除symfony 2上的缓存
我正试图通过我的应用程序清空symfony2缓存,就像我在做Php 以编程方式清除symfony 2上的缓存,php,symfony,caching,Php,Symfony,Caching,我正试图通过我的应用程序清空symfony2缓存,就像我在做php应用程序/控制台缓存:clear 我尝试过许多不同的解决方案,例如: //solution 1 $process = new Process('php '.__DIR__.'/../../../../../app/console cache:clear'); $process->setTimeout(3600); $process->run(); //solution 2 $input = new StringInp
php应用程序/控制台缓存: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启动($\已设置会话)
似乎Symfony正在尝试在呈现过程中重建页面或重新启动应用程序
如何通过一些php代码清除缓存
编辑:
由于我的路由系统,我实际上正在尝试重新生成缓存。我制作了一个捆绑包,它采用symfony 2路线,并添加了为SEO目的重写它的可能性(例如:我有一个指向/category的front_category路线,通过这个捆绑包,我可以将其重写为category SEO optimized.html)
如果我在一个需要特定参数的路由上,比如ID,我需要为它创建一个特殊的路由,以便重写它。例如,对于/category/3,我需要创建一个名为category_3和。。为了让symfony知道我更改了路由系统,我必须清除缓存。这里已经回答了一个类似的问题:-3月20日15:37 pomaxa回答 我已经测试并扩展了pomaxa的代码: 控制器代码
use Symfony\Component\Console\Input\ArgvInput;
use Symfony\Component\Console\Output\ConsoleOutput;
$command = $this->container->get('yourservice.cache.clear');
//$dynamicEnvMode = $this->container->getParameter('kernel.environment')
$staticEnvMode = 'dev'; // to use develop mode
$staticEnvMode = 'prod --no-debug'; // to use production mode
$input = new ArgvInput(array('--env=' . $staticEnvMode ));
$output = new ConsoleOutput();
$command->run($input, $output);
我使用静态环境模式,并尝试使用CacheClearCommand对象而不是服务,但没有成功。缓存清除操作可能需要很长时间才能加载,因此使用服务可能会更好
最好的方法是在不清除缓存的情况下解决您的问题。查找快速变化的实体、操作或任何您需要的内容,并禁用它们的缓存。
如果您发布了一个详细的问题(并将链接放在注释中),为什么需要忽略缓存和位置,那么我可以帮助您找到另一种方法。与我刚才遇到的问题完全相同。 对我来说,最简单的解决方案是:
use Symfony\Component\Filesystem\Filesystem;
在控制器中:
$fs = new Filesystem();
$fs->remove($this->container->getParameter('kernel.cache_dir'));
这将删除当前环境的缓存目录。此处回答:此解决方案似乎不适用于Symfony 3。在S3应用程序中,这会导致
“无法删除文件”…\var\cache\prod\sessions\sess.
这会导致生产服务器停机。这会导致web服务器挂起并超时。(交响乐3.4,PHP 7.1)