Dans un de nos derniers projets Symfony, nous avons été confrontés au fait de devoir effacer tout le cache de l’application sans devoir passer par la ligne de commandes, voici la petite astuce qui servira à d’autres pouvant être confrontés au même cas de figure
Un code simple mais efficace qui efface tout le cache
$application = $this->getApplication()->find('cache:clear'); $application->run(new ArrayInput(array( 'command' => 'cache:clear' )), new NullOutput());
Le morceau de code est relativement simple. On récupère la commande cache:clear que l’on va lancer. Le résultat de l’exécution est stocker dans un buffer vide (NullOutput) de sorte à ne pas garder le résultat de la sortie de commande.
Il est tout à fait possible de récupérer le résultat de la commande et de s’en servir par la suite, dans ce cas, il faut utiliser un BufferedOutput.
Nous avons utilisé ce bout de code dans une ligne de commande symfony, le besoin était d’effacer le cache complet après avoir synchronisé un certain nombre de données.