Ver la Versión Completa : Limpiar Cache de Magento mediante programación
davidselo
04-25-2011, 12:56 PM
Buenas, necesito limpiar la cache desde código de un cronjob que he creado y que ejecuta un método de un model de Magento, para ello googleando he encontrado un par de métodos de los cuales no me funciona ninguno.
En este enlace (http://www.knowmagento.com/) está lo que estoy intentando hacer. Estos métodos no me funcionan, por que puede ser esto? alguien sabe otra forma de realizarlo? al final creo que tendré que eliminar la cache borrando var/cache con otro cronjob.
OSdave
04-25-2011, 05:20 PM
dices que no te funciona: ¿que has hecho hasta ahora?
davidselo
04-25-2011, 05:33 PM
cronjob que mueve una categoría haciendo que el padre sea otro, de proximamente a actuales, el caso es que en la versión que tengo en desarrollo no es necesario refrescar nada para observar el cambio en el momento. En producción tengo una 1.4.2.0 y en desarrollo una 1.5.0.1. He ido refrescando uno por uno cada elemento y he observado que la categoría la veo al refrescar el elemento Bloquear salida HTML. Alguna idea de por que no funcione? tengo varias vistas de tiendas, puede ser por eso?
OSdave
04-25-2011, 10:47 PM
en la de desarrollo tienes el cache activado? y en la de prod?
davidselo
04-25-2011, 11:09 PM
Pues resulta que en los dos sitios tengo la cache activada, pero se que en producción es necesario refrescar cache para que surja efecto, lo se porque al refrescar la cache, ya aparece la categoría. Pero no consigo refrescarla mediante programación vaya( desde mi cronjob)
OSdave
04-26-2011, 12:01 PM
ponme el codigo que has escrito para refrescar el codigo programaticamente, a ver si veo algo
davidselo
04-26-2011, 12:13 PM
Pues mira estos dos conjuntos de códigos he probado y nada
/* este método no funciona
Mage::app()->cleanCache();
Mage::app()->getCache()->clean();
*/
/*este método no funciona
Mage::getSingleton('catalog/index')->rebuild();
Mage::getResourceModel('catalog/product_flat_indexer')->rebuild();
Mage::getSingleton('cataloginventory/stock_status')->rebuild();
*/
que ahora los tengo comentados ya que como no funcionan, también he intentado ejecutar esto (http://stackoverflow.com/questions/5460165/how-to-clean-magento-cache) dentro de mi cron creando la funcion _refresh_cache() y nada.
La versión de magento que utilizo es 1.4.2.0.
También he probado a ejecutar el refresco que hace el método move de categorías y nada
Mage::app()->cleanCache(array(self::CACHE_TAG));
OSdave
04-26-2011, 12:39 PM
la solucion de stackOverflow parece bastante sencilla, pero el lo hace desde un fichero fuera de Magento: si tu lo haces a traves de un modulo tienes que modificarlo un poco (basicamente eliminar las lineas que instancian Mage::app() ya que el modulo ya lo tiene.
¿Estas segurissimo que el cron se ejectua? (no hablo del resultado de la operacion de tu metodo, sino que efectivamente el cron llama al metodo)
self::LO_QUE_SEAsolo funciona en la classe que haya definido esta constante. Para usarlo fuera de esta clase tienes que hacer algo como
Namespace_Modulo_Model_Clase::LO_QUE_SEA, por ejemplo
Mage_Catalog_Model_Category::CACHE_TAG
davidselo
04-26-2011, 12:48 PM
El cron se esta ejecutando correctamente, ya que la categoría la mueve de lugar y también me manda un correo con los resultados de la operación. Ahora acabo de ver que la carpeta var/cache y var/session tenían permisos 744, no se si esto influirá en algo. Ahora voy a intentar a volver a realizar las opciones anteriores pero con los permisos adecuados de cache.
Otra cosa que he intentado es borrar manualmente la cache con rm desde ssh pero nada, no tengo surge efecto.
También probaré como me comentas esto
Mage::app()->cleanCache(array(Mage_Catalog_Model_Category::CACH E_TAG));
aunque creo que no va a funcionar ya que esta línea la ejecuta el metodo move() que es el que utilizo para activar la categoría, y por consecuencia estoy ejecutando.
Por cierto tuve en cuenta lo que me dijiste de si se ejecuta desde un archivo externo.
Resultado: nada que no hay manera. Alguien ha hecho lo que estoy intentando para una versión 1.4.2.0
OSdave que crees que puede estar pasando...... alguna idea
Desactivando la cache de bloques, la que pone Bloquear salida HTML funciona. Ahora quiero saber como podría refrescar únicamente esa cache y que consecuencias puedo tener al tenerla desactivada, ya que creo que es la cache que almacena los bloques :( o eso creo
OSdave
04-27-2011, 10:42 AM
para refrescar el cache de la salida html, tendrias que probar:
Mage::app()->getCacheInstance()->cleanType('block_html');
davidselo
04-27-2011, 04:51 PM
para refrescar el cache de la salida html, tendrias que probar:
Mage::app()->getCacheInstance()->cleanType('block_html');
Acabo de probar esto y nada, vaya no hay manera por ahora tengo desactivado este elemento de la cache para salir del paso pero me gustaría hacerlo funcionar la verdad. La cosa que en la versión de desarrollo me funciona correctamente que es una 1.5.1.0 pero en producción tengo la 1.4.2.0 y tengo un poco de mieditis de actualizar en producción.
Powered by vBulletin® Version 4.1.10 Copyright © 2012 vBulletin Solutions, Inc. All rights reserved.