Je souhaite effacer le cache de mon application frontend d'une action dans mon application backend.Effacement du cache Symfony pour une autre application
Comment puis-je y parvenir?
Je souhaite effacer le cache de mon application frontend d'une action dans mon application backend.Effacement du cache Symfony pour une autre application
Comment puis-je y parvenir?
je crois que la bonne façon de le faire dans symfony 1.2 est la suivante:
sfContext::switchTo('frontend'); //switch to the environment you wish to clear
sfContext::getInstance()->getViewCacheManager()->getCache()->clean(sfCache::ALL);
sfContext::switchTo('backend'); //switch back to the environment you started from
Je ne pense pas qu'il n'y ait pas de façon "propre" de faire le travail, car différentes applications sont traitées comme des environnements assez séparés dans symfony. Il est évident que le travail peut être fait dans une plus ou moins sale chemin, choisissez votre façon de supprimer tout fichier dans le cache/dir, exécutez la tâche phing clair-cache (cc) etc ...
vous pouvez lancez simplement rm -rf cache/*, mais vous pourriez casser une requête client. La simple chose pourrait être à courir symfony cc via passthru() ou exec()
Cela fonctionne pour moi. Il supprime tous les fichiers mis en cache à partir du répertoire donné:
$cache_dir = sfConfig::get('sf_cache_dir').'/'.$app.'/'.$env.'/';
$cache = new sfFileCache(array('cache_dir' => $cache_dir));
$cache->clean();
Vous pouvez créer une instance de sfTask et l'exécuter comme celui-ci (en sf 1.2):
$task = new sfCacheClearTask(sfContext::getInstance()->getEventDispatcher(), new sfFormatter());
$arguments = array();
// type can be one of: i18n, routing, template, module, config
$options = array(
'frontend' => 'app',
'routing' => 'type',
'prod' => 'env',
);
$task->run($arguments, $options);
Pour tous les arguments et les options possibles, voir le code source de sfTask approprié ...
Si vous souhaitez supprimer un élément de cache (une page):
sfContext::switchTo('frontend');
sfContext::getInstance()->getViewCacheManager()->remove("module/action?¶m1=value1¶m2=value2","THE-DOMAIN-OF-YOUR-FRONTEND-APPLICATION-IF-U-USE-IT-IN-CACHE-KEYS");
sfContext::switchTo('backend');