Компонент Symfony Cache (3.1) не сохраняет кеш

Я использую новый компонент Symfony Cache. Сначала я генерирую свой кеш с помощью команды (Command/AppCacheGenerateCommand.php):

$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 (EventListener/RequestListener.php)

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

Он всегда умирает здесь, не идя дальше. Кто-нибудь может дать мне объяснение? (Я пробовал, если хост не соответствует, но это так...)


person Apród Illés    schedule 22.11.2016    source источник
comment
Вы должны добавить ответ с решением (а затем принять его), а НЕ как обновление внутри вашего вопроса. Загляните в Справочный центр!   -  person gp_sflover    schedule 27.11.2016


Ответы (1)


Я понял ответ:

Сначала мне пришлось добавить конфигурацию кеша в 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);

И он начал работать! Надеюсь, это поможет другим!

person Apród Illés    schedule 22.11.2016
comment
Вы должны добавить ответ здесь, а НЕ как обновление внутри вашего вопроса. Взгляните на раздел Справочный центр или на тысячу вопросов с принятым ответом здесь, на StackOverflow, чтобы получить его. - person gp_sflover; 24.11.2016
comment
Пожалуйста, обратите внимание на совет @gp_sflover. Используйте ответы для ответов и вопросы для вопросов. Это так просто. Я сделал это сейчас для вас, Но сэкономьте время других, в следующий раз. Ваше здоровье - person Bhargav Rao; 27.11.2016