2009-08-25 19 views

Odpowiedz

8

wierzę właściwy sposób to zrobić w symfony 1.2 jest następująca:

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

Nie sądzę, że nie ma "czystej" metody wykonania zadania, ponieważ różne aplikacje traktowane są w symfony jako dość oddzielone środowiska. Oczywiście praca może odbywać się w mniej lub bardziej brudny sposób wybrać swoją drogę, aby usunąć plik z pamięci podręcznej/dir, uruchom zadanie Phing clear-cache (CC) etc ...

można po prostu uruchom pamięć podręczną rm -rf/*, ale możesz przerwać żądanie klienta. Prostsze rzeczą może być uruchomić symfony cc poprzez passthru() lub exec()

4

Działa to dla mnie. Usuwa wszystkie buforowane pliki z danego katalogu:

$cache_dir = sfConfig::get('sf_cache_dir').'/'.$app.'/'.$env.'/'; 

$cache = new sfFileCache(array('cache_dir' => $cache_dir)); 
$cache->clean(); 
0

Można utworzyć instancję sfTask i uruchomić go tak (w SF 1.2): Kod

$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); 

dla wszystkich możliwych argumentów i opcji zobaczyć źródłowym odpowiedniej sfTask ...

1

Jeśli ktoś chce wyczyścić jeden element pamięci podręcznej (jedna strona):

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'); 
Powiązane problemy