gpt4 book ai didi

php - 以编程方式清除 symfony 2 上的缓存

转载 作者:可可西里 更新时间:2023-10-31 22:13:10 26 4
gpt4 key购买 nike

我正在尝试通过我的应用程序清空 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 中遇到的错误(这似乎是最好的):

Failed to start the session: already started by PHP ($_SESSION is set).

似乎 Symfony 正在尝试重建页面或在呈现过程中重新启动应用程序。

如何通过一些 php 代码清除缓存?

编辑:由于我的路由系统,我实际上正在尝试重新生成缓存。我做了一个 bundle,它采用 symfony 2 路由,并增加了为 SEO 目的重写它的可能性(例如:我有一个指向/category 的 front_category 路由,有了这个 bundle,我可以将它重写为 category-seo-optimized。 html)。

如果我在一条需要特定参数(例如 ID)的路线上,我需要为其创建一条特殊路线以便重写它。例如,对于/category/3,我需要创建一个名为 category_3 的路由,并且...为了让 symfony 知道我已经更改了路由系统,我必须清除缓存。

最佳答案

跟我刚刚遇到的问题一模一样。对我来说最简单的解决方案是:

use Symfony\Component\Filesystem\Filesystem;

在 Controller 中:

$fs = new Filesystem();
$fs->remove($this->container->getParameter('kernel.cache_dir'));

这将删除当前环境的缓存目录。

关于php - 以编程方式清除 symfony 2 上的缓存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24115395/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com