Ich automatisiere Release-Konfigurationen, indem ich Mage in mehrere Release-Skripte einbinde. Am Ende der Skripte muss ich den Cache von Magento leeren.
Gibt es eine Möglichkeit, den Cache mithilfe einer der MageKlassen oder Methoden zu leeren?
Ich automatisiere Release-Konfigurationen, indem ich Mage in mehrere Release-Skripte einbinde. Am Ende der Skripte muss ich den Cache von Magento leeren.
Gibt es eine Möglichkeit, den Cache mithilfe einer der MageKlassen oder Methoden zu leeren?
Antworten:
Bitte versuchen Sie den folgenden Code, um den Cache programmgesteuert zu leeren
Mage::app()->cleanCache()
oder
Mage::app()->getCacheInstance()->flush();
Wenn Sie es wirklich wollen, können Sie auch nur einen oder mehrere Cache-Typen bereinigen. So macht es eigentlich der Admin-Bereich. UnterMage_Adminhtml_CacheController::massRefreshAction
Sie können sehen, dass es alle Parameter durchläuft typesund Folgendes aufruft
$tags = Mage::app()->getCacheInstance()->cleanType($type);
Mage::dispatchEvent('adminhtml_cache_refresh_type', array('type' => $type));
$updatedTypes++;
Mögliche Typen sind wie folgt:
Und diese können durch einen Anruf zurückgegeben werden Mage::app()->getCacheInstance()->getTypes()
Ein schnelles externes Skript zum Löschen des gesamten Caches:
<?php
require_once './app/Mage.php';
umask(0);
Mage::app('default');
Mage::app()->setCurrentStore(Mage_Core_Model_App::ADMIN_STORE_ID);
try {
$allTypes = Mage::app()->useCache();
foreach($allTypes as $type => $value) {
Mage::app()->getCacheInstance()->cleanType($type);
Mage::dispatchEvent('adminhtml_cache_refresh_type', array('type' => $type));
echo "{$type} </br>";
}
echo 'done';
} catch (Exception $e) {
echo $e->getMessage();
}
Unsere wir könnten n98-magerun verwenden . Zumal Sie den Cache während der Ausführung von Deployment-Skripten niemals leeren sollten. Schauen Sie sich auch den sys:setup:incrementalUnterbefehl an, um die Ausführung der Magento-Setup-Skripte zu kontrollieren.
Wenn Sie wirklich alle Cache-Speicher löschen müssen, geben Sie den folgenden Code ein:
Mage::app()->getCacheInstance()->flush();
Hier ruft die Flush-Funktion die Standard-Magento-Cache-Funktionalität auf. Wenn Sie weitere Erläuterungen benötigen, beziehen Sie sich auf die folgende URL.