Me gustaría borrar la caché de mi aplicación frontend de una acción en mi aplicación back-end.Limpiando el caché de Symfony para otra aplicación
¿Cómo puedo lograrlo?
Me gustaría borrar la caché de mi aplicación frontend de una acción en mi aplicación back-end.Limpiando el caché de Symfony para otra aplicación
¿Cómo puedo lograrlo?
creo que la forma correcta de hacer esto en Symfony 1.2 es el siguiente:
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
No creo que no haya una manera "limpia" de hacer el trabajo, ya que las diferentes aplicaciones se tratan como entornos bastante separados en Symfony. Obviamente el trabajo puede hacerse de una manera más o menos sucia, elija su forma de eliminar cualquier archivo en la memoria caché/dir, ejecute la tarea phing clear-cache (cc) etc ...
que pueda simplemente ejecute rm -rf cache/*, pero podría romper alguna solicitud del cliente. La cosa más simple podría ser correr symfony cc través passthru() o exec()
Esto funciona para mí. Se elimina todos los archivos almacenados en caché del directorio dado:
$cache_dir = sfConfig::get('sf_cache_dir').'/'.$app.'/'.$env.'/';
$cache = new sfFileCache(array('cache_dir' => $cache_dir));
$cache->clean();
Usted puede crear instancia de sfTask y ejecutarlo como esto (en sf 1.2): el código fuente
$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);
Para todos los argumentos y opciones posibles ver de sfTask apropiada ...
Si alguien está buscando borrar un elemento de caché (una página):
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');