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 Mage
Klassen 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 Mage
Klassen 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 types
und 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:incremental
Unterbefehl 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.