本文概述
- 1.创建cache:clear命令
- 2.全局定义缓存路径
- 3.测试命令
在本文中, 我们将向你展示如何轻松地将cache:clear命令添加到你的Silex应用程序。
重要在本教程中, 我们假设你已经为silex实现了console.php文件, 你可以在其中注册新的控制台命令, 如果你没有这样做, 请参考Symfony的控制台组件以获取更多信息。
1.创建cache:clear命令【如何在Silex项目中使用CLI清除缓存】我们将为你提供清除Silex项目缓存文件夹的命令, 但是你需要知道如何在应用程序中加载该命令。这通常是在项目的console.php文件中完成的(遵循默认的Silex Skeleton结构), 在该文件中你应该已经找到一个Symfony控制台应用程序。如果没有, 则可以创建它。以下示例添加了cache:clear命令, 该命令在console.php文件中创建一个基本的控制台应用程序:
<
?php// src/console.phpuse Symfony\Component\Console\Application;
use Symfony\Component\Console\Input\InputInterface;
use Symfony\Component\Console\Output\OutputInterface;
use Symfony\Component\Console\Input\InputArgument;
use Symfony\Component\Console\Input\InputOption;
use Symfony\Component\Finder\Finder;
// Your application, this is just an example of initialization, this should be different in your app ...$console = new Application('My Silex Application', 'n/a');
$console->
getDefinition()->
addOption(new InputOption('--env', '-e', InputOption::VALUE_REQUIRED, 'The Environment name.', 'dev'));
$console->
setDispatcher($app['dispatcher']);
$console->
register('my-command')->
setDefinition(array(// new InputOption('some-option', null, InputOption::VALUE_NONE, 'Some help'), ))->
setDescription('My command description')->
setCode(function (InputInterface $input, OutputInterface $output) use ($app) {// do something});
// Register the cache:clear command !$console->
register('cache:clear')->
setDescription('Clears the cache')->
setCode(function (InputInterface $input, OutputInterface $output) use ($app) {if (!isset($app['cache.path'])){$output->
writeln(sprintf("<
error>
ERROR:<
/error>
could not clear the cache: <
info>
\$app['cache.path']<
/info>
is not set.", 'cache:clear'));
return false;
}$cacheDir = $app['cache.path'];
$finder = new Finder();
$finder->
in($cacheDir)->
notName('.gitkeep');
//--- from Filesystem::remove()$remove = function ($files, $recurse) {$files = iterator_to_array($files);
$files = array_reverse($files);
foreach ($files as $file) {if (!file_exists($file) &
&
!is_link($file)) {continue;
}if (is_dir($file) &
&
!is_link($file)) {$recurse(new \FilesystemIterator($file), $recurse);
if (true !== @rmdir($file)) {throw new \Exception(sprintf('Failed to remove directory %s', $file));
}} else {// https://bugs.php.net/bug.php?id=52176if (defined('PHP_WINDOWS_VERSION_MAJOR') &
&
is_dir($file)) {if (true !== @rmdir($file)) {throw new \Exception(sprintf('Failed to remove file %s', $file));
}} else {if (true !== @unlink($file)) {throw new \Exception(sprintf('Failed to remove file %s', $file));
}}}}};
$remove($finder, $remove);
$output->
writeln("Cache succesfully cleared!");
return true;
});
return $console;
将更改保存到文件, 然后继续下一步。
2.全局定义缓存路径否则, 你将发现异常” 错误:无法清除缓存:未设置$ app [‘ cache.path’ ]” 。如果你尝试运行命令而不执行此步骤。要定义cache.path属性, 你可能需要在项目的app.php文件中进行操作, 只需将新密钥分配给$ app变量, 并指定Silex项目的cache文件夹的路径:
注意根据项目的结构, 路径可能会更改, 因此请确保提供正确的路径。
// Define the cache.path property to the cache directory of your Silex Project.// app.php$app['cache.path'] = __DIR__.'/../var/cache';
3.测试命令最后一步, 保存更改后, 你将可以从终端在项目的根文件夹上运行命令:
php bin/console cache:clear
从终端运行命令后, 假设一切正常, 你将看到” 缓存已成功清除” 消息。
编码愉快!
推荐阅读
- 如何解决FOSUserBundle异常(服务” fos_user.mailer”具有对不存在的服务”模板”的依赖)
- 如何解决C++错误C4996’getch’(不建议使用此项目的POSIX名称。而是使用符合ISO C和C ++的名称:_getch)
- 如何在自己的插件之前在Shopware中注册第三方插件的自定义模型
- 如何反序列化使用Doctrine存储在数据库中的DC2Type数组数据类型
- 如何在Symfony 3中生成通用唯一标识符(UUID)
- 如何在基于CLI的基于Unix的操作系统中使用TAR压缩整个目录(包括子目录)
- 通过USB连接到Xamarin.Android应用程序与网站进行通信
- Xamine Android WindowSoftInput Resize(特定页面)
- Xamarin Android(此应用程序使用不正确的配置构建)