Başka bir uygulama için Symfony önbelleği temizleniyor

5 Cevap php

Benim arka uç uygulamada bir eylem benim önuç uygulamanın önbelleğini temizlemek istiyorum.

Bunu nasıl başarabiliriz?

5 Cevap

Ben şöyle symfony 1.2 bunun için doğru yol olduğuna inanıyorum:

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

Bu benim için çalışıyor. Bu verilen dizindeki tüm önbelleğe alınmış dosyaları kaldırır:

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

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

Sen sfTask örneğini oluşturmak ve (sf 1.2) bunu şöyle çalıştırabilirsiniz:

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

Olası tüm argümanları ve seçenekleri için uygun sfTask kaynak kodu görmek ...

Herhangi tek tek önbellek öğesi (bir sayfa) takas için arıyor:

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

Google olduğunu söyledi bir symfony.sh yerde ve bu dosya onun argüman olabilir clear-cache frontend. Bkz here

Ancak ben hiç Symfony bilmiyorum.