¿Cómo puedo lavar mediante programación la caché de Magento?


23

Estoy automatizando las configuraciones de lanzamiento arrancando Mage en varios scripts de lanzamiento. Al final de los scripts, necesito vaciar el caché de Magento.

¿Hay alguna manera de vaciar el caché usando una de las Mageclases o métodos?


1
intente esto: Mage :: app () -> cleanCache () o Mage :: app () -> getCacheInstance () -> flush ();
Stefan Gregori

Respuestas:


25

Intente el siguiente código para vaciar el caché mediante programación

Mage::app()->cleanCache()

o

Mage::app()->getCacheInstance()->flush(); 

40

Si realmente quisieras, también podrías limpiar uno o más tipos de caché. Así es como lo hace la sección de administración. DebajoMage_Adminhtml_CacheController::massRefreshAction

Puedes ver que recorre todos los parámetros types y llama a lo siguiente

$tags = Mage::app()->getCacheInstance()->cleanType($type);
Mage::dispatchEvent('adminhtml_cache_refresh_type', array('type' => $type));
$updatedTypes++;

Los tipos posibles son los siguientes:

  1. config
  2. diseño
  3. block_html
  4. traducir
  5. colecciones
  6. cada
  7. config_api
  8. config_api2
  9. página completa

Y estos pueden devolverse llamando Mage::app()->getCacheInstance()->getTypes()


3
Después de haber fallado con la limpieza de caché mediante programación, este comentario es más útil que la respuesta seleccionada. Como es importante llamar a dispatchEvent, mis ESI de Varnish no se borraron hasta que agregué la llamada dispatchEvent. (Lo que, por supuesto, permitirá que otros módulos activen su código en consecuencia)
Barry Carlyon

6

Un script externo rápido para borrar todo el caché:

<?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();
}

3

Nuestro podríamos usar n98-magerun . Especialmente porque nunca debe vaciar el caché durante la ejecución de los scripts de implementación. También mire el sys:setup:incrementalsubcomando para una ejecución más controlada de los scripts de configuración de Magento.


¿Puede proporcionar alguna información adicional sobre su declaración "Especialmente porque nunca debe vaciar el caché durante la ejecución de los scripts de implementación"?
STW

1
Magento tiene una función que ejecuta actualizaciones automáticamente. Esto se activa cuando la caché de configuración tiene que ser reconstruida. A menos que necesite específicamente esa característica y la codifique cuidadosamente, debe introducir un proceso paralelo que usted o sus colegas no hayan previsto.
Melvyn

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.