2009-08-25 6 views

Répondre

8

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 
0

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()

4

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(); 
0

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é ...

1

Si vous souhaitez supprimer un élément de cache (une page):

sfContext::switchTo('frontend'); 
sfContext::getInstance()->getViewCacheManager()->remove("module/action?&param1=value1&param2=value2","THE-DOMAIN-OF-YOUR-FRONTEND-APPLICATION-IF-U-USE-IT-IN-CACHE-KEYS"); 
sfContext::switchTo('backend'); 
Questions connexes