Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to invalidate container cache in Symfony2?

Tags:

php

symfony

Part of my Symfony app configuration is being loaded from legacy database, so sometimes I need to invalidate container cache to make use of updated data.

Is there any API to invalidate Symfony container cache programmatically?

like image 214
Troggy Avatar asked Dec 26 '22 17:12

Troggy


1 Answers

  1. As per CacheClearCommand:

    $filesystem   = $this->container->get('filesystem');
    $realCacheDir = $this->container->getParameter('kernel.cache_dir');
    $this->container->get('cache_clearer')->clear($realCacheDir);
    $filesystem->remove($realCacheDir);
    
  2. Directly call CacheClearCommand from code:

    services.yml

    clear_cache_command_service:
        class: Symfony\Bundle\FrameworkBundle\Command\CacheClearCommand
        calls:
           - [setContainer, ["@service_container"] ]
    

    Than it's possible to do something like this (note that this will warmup the cache):

    $clearCacheCommand = $this->container->get('clear_cache_command_service');
    $clearCacheCommand->run(new ArgvInput(), new ConsoleOutput());
    
like image 120
Troggy Avatar answered Jan 05 '23 18:01

Troggy