2011-05-23 11 views
6

Estoy desarrollando una extensión de Magento que introduce una nueva tabla en el DB. Cada vez que publico una nueva versión de la extensión que realiza modificaciones en el esquema de la tabla, encuentro que los usuarios se ven obligados a hacer clic manualmente en el botón "Flush Cache Storage" en Sistema> Administración de caché.¿Cómo borrar el almacenamiento en memoria caché de Magento de su esquema DB?

Me gustaría que mi extensión elimine automáticamente la caché al instalarla. Sé cómo hacer lo mismo con el botón mediante programación, pero preferiría no hacerlo, porque esto elimina toda la carpeta del caché de Magento y tiene un impacto negativo en el rendimiento.

¿Alguien podría saber cómo escribir código que borrará el almacenamiento en caché del esquema de mi tabla y lo hará tan específicamente como sea posible, dejando intactos los datos en caché no relacionados?

Actualización: He encontrado el archivo que contiene la memoria caché de esquema de mi tabla aquí: /var/cache/mage-f/mage---d07_DB_PDO_MYSQL_DDL_<table_name>_1d. ¿Ahora cómo lo apunto en el código? :)

+1

Es inusual que se requiera una actualización de caché. ¿Cómo estás realizando los cambios? – clockworkgeek

+0

Me ha sorprendido tanto como no lo he visto en la versión anterior de mi extensión. Esto es lo que tengo en mi script de actualización: '$ installer = $ this; $ installer-> startSetup(); $ instalador de> Ejecutar (" ALTER TABLE '{$ this-> getTable (' mi_tabla ')}' AÑADIR COLUMNA INT 'Columnx' (11) NULL, AÑADIR COLUMNA 'columnY' VARCHAR (45) NULL, ADD COLUMN 'columnZ' VARCHAR (45) NULL, ADD COLUMN 'columnW' text NULL DESPUÉS 'columnA'; "); $ installer-> endSetup(); ' ¿Estoy haciendo algo fuera de lo común? – urig

Respuesta

8

Esto es lo que he sido capaz de llegar a:

$app = Mage::app(); 
if ($app != null) 
{ 
    $cache = $app->getCache(); 
    if ($cache != null) 
    { 
     $cache->clean('matchingTag', array('DB_PDO_MYSQL_DDL')); 
    } 
} 

Esto eliminará solamente las entradas de caché de metadatos y archivos que contienen información acerca de los esquemas de base de datos.

Tenga en cuenta que eliminará estas entradas para todas las tablas. No hay una forma simple de borrar el esquema en caché de una tabla específica y dejar el resto intacto.

Cuestiones relacionadas