이 질문에
이 할 수있는 reasonnable 방법을 괜찮은 답장을 가지고 대답에 내 의견을 변환하는 Cache Warmer을 만드는 것입니다
는 kernel.cache_warmer
services.yml
services:
acme_foo.my_warmer:
class: Acme\FooBundle\CacheWarmer
arguments:
- @filesystem
tags:
- name: kernel.cache_warmer
- priority: 0
따뜻한 캐시가 CacheWarmerInterface를 구현해야합니다 그것을 당신이 새로운 서비스를 만들 필요가 이렇게하고, 태그를합니다. 이 구성 요소를
namespace Acme\FooBundle;
use Symfony\Component\Filesystem\Filesystem;
use Symfony\Component\HttpKernel\CacheWarmer\CacheWarmerInterface
class CacheWarmer implements CacheWarmerInterface
{
protected $filesystem;
public function __construct(Filesystem $filesystem)
{
$this->filesystem = $filesystem;
}
/**
* {@inheritDoc}
*/
public function warmUp($cacheDir)
{
$real = sprintf("%s/feeds", $cacheDir);
$this->filesystem->mkdir($real);
}
/**
* {@inheritDoc}
*/
public function isOptional()
{
return true;
}
}
, 당신은 cache:clear
(--no-워밍업없이) 실행할 때 /feeds
이 생성 될 디렉토리 또는 cache:warmup
명령.
그것은 당신이 디렉토리가 존재 응용 프로그램에서 확인 할 수있다
$filename = "/cache/dir/feeds/file";
if (!is_dir(dirname($filename))) {
mkdir(dirname($filename));
}
당신은 [캐시 워머]을 만들 수를 예열되지 않은 캐시의 경우 치명적인 오류를 방지하는 것을 mentionning 가치 (http://symfony.com/doc/current/reference/dic_tags.html#kernel-cache-warmer) – Touki
고마워, 지금 당장하고있어. –