Очистка кеша Symfony для другого приложения - PullRequest
5 голосов
/ 25 августа 2009

Я хотел бы очистить кэш моего внешнего приложения от действия в моем внутреннем приложении.

Как мне этого добиться?

Ответы [ 5 ]

8 голосов
/ 22 сентября 2009

Я считаю, что правильный способ сделать это в Symfony 1.2 заключается в следующем:

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
4 голосов
/ 25 августа 2009

Это работает для меня. Удаляет все кэшированные файлы из указанного каталога:

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

$cache = new sfFileCache(array('cache_dir' => $cache_dir));
$cache->clean();
1 голос
/ 06 ноября 2012

Если кто-то ищет очистку одного элемента кэша (одной страницы):

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');
0 голосов
/ 27 августа 2009

Вы можете создать экземпляр sfTask и запустить его так (в 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);

Для всех возможных аргументов и опций см. Исходный код соответствующего sfTask ...

0 голосов
/ 25 августа 2009

Я не думаю, что не существует "чистого" способа выполнить эту работу, поскольку разные приложения рассматриваются как совершенно отдельные среды в Symfony. Очевидно, что работа может выполняться менее или более грязным способом, выберите способ удаления любого файла из кэша / каталога, запустите задачу phing clear-cache (cc) и т. Д.

вы можете просто запустить rm -rf cache / *, но вы можете прервать запрос клиента. Более простой способ - запустить symfony cc через passthru () или exec ()

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...