2016-11-22 80 views
2

我正在使用新的Symfony緩存組件。我第一次產生我的緩存的命令(指令/ AppCacheGenerateCommand.php):Symfony緩存組件(3.1)不保存緩存

$cache = new FilesystemAdapter();   
foreach ($domains as $domain){ 
     if ($domain->getHost()){ 
      $output->writeln('Generate cache for domain: ' . $domain->getHost()); 
      $domainCache = $cache->getItem('domain.' . $domain->getHost()); 
      $domainCache->set($domain->getId()); 
      $cache->save($domainCache); 
     } 
    } 

然後試圖讓在onKernelRequest的EventListener(事件監聽/ RequestListener.php)這些緩存的元素

$cache = new FileSystemAdapter(); 
    $domainCache = $cache->getItem('domain.' . $host); 
    if (!$domainCache->isHit()){ 
     die; 
    } 

它總是在這裏死亡,而不是進一步。任何人都可以給我一個解釋? (我試過,如果主機不匹配,但它確實...)

+0

你必須在解決方案中添加一個答案(然後接受它),而不是在你的問題中更新。查看幫助中心! –

回答

2

我已經想通了答案:

首先,我不得不添加緩存配置在config.yml:

framework: 
    cache: 
     pools: 
      my_cache_name: 
       adapter: cache.adapter.filesystem 
       default_lifetime: 0 

比,而不是

$cache = new FilesystemAdapter(); 

我不得不使用像新的服務:

$cache = $this->getContainer()->get('my_cache_name); 

它開始工作!希望它對別人有幫助!

+1

你必須在這裏添加答案,而不是在你的問題內更新。看看[幫助中心](http://stackoverflow.com/help)部分,或者在StackOverflow上的一個被接受的答案的上千個問題來獲得它。 –

+0

請注意@ gp_sflover的建議。使用答案來回答問題並提出問題。就這麼簡單。我現在已經爲你做了,但下次要節省時間。乾杯 –