How to clean Magento cache?

I need a simple script that will refresh every single element of the Magento cache.
I’m running 1.3.2.3 and can’t upgrade.

3 thoughts on “How to clean Magento cache?”

  1. Example cron job script to refresh magento cache :
    ( the script was published in magento forum from amartinez )

    Run via cron job

    00  0 * * *   root /var/www/html/magento/cron_refresh_cache.php >> /var/log/cron_refresh_cache.log 
    

    The php file :

    #!/usr/bin/php
    <?php
    /**
    * cron_refresh_cache.php
    * 
    * @copyright  copyright (c) 2009 toniyecla[at]gmail.com
    * @license    http://opensource.org/licenses/osl-3.0.php open software license (OSL 3.0)
    */
    
    ( !$_SERVER["HTTP_USER_AGENT"] ) or die ( "Nothing to don" ); // to run via local browser use ($_SERVER["SERVER_ADDR"] == $_SERVER["REMOTE_ADDR"]) 
    
    require_once 'app/Mage.php';
    umask( 0 );
    Mage::app( "default" ); // if getting error change this line to Mage::app(Mage::app()->getStore());  
    $ver = Mage::getVersion();
    $userModel = Mage::getModel( 'admin/user' );
    $userModel -> setUserId( 0 );
    Mage::getSingleton( 'admin/session' )->setUser( $userModel );
    
    echo "Refreshing cache...n";
    Mage::app()->cleanCache();
    $enable = array();
    foreach ( Mage::helper( 'core' )->getCacheTypes() as $type => $label ) {
        $enable[$type] = 1;
        } 
    
    Mage::app()->saveUseCache( $enable ); 
    refresh_cache(); // call refresh function 
    
    function refresh_cache() 
        {    
            $this -> notify( 'Refreshing cache' );
            try {
                Mage :: getSingleton( 'catalog/url' ) -> refreshRewrites();
                $this -> notify( 'Catalog Rewrites was refreshed successfully', 'blank');
                } 
            catch ( Exception $e ) {
                $this -> notify( $e -> getMessage(), 'warning' );
                }
            try {
                Mage :: getSingleton( 'catalog/index' ) -> rebuild();
                $this -> notify( 'Catalog Index was rebuilt successfully', 'blank');
                } 
            catch ( Exception $e ) {
                $this -> notify( $e -> getMessage(), 'warning' );
                }
            try {
                $flag = Mage :: getModel( 'catalogindex/catalog_index_flag' ) -> loadSelf();
                if ( $flag -> getState() == Mage_CatalogIndex_Model_Catalog_Index_Flag :: STATE_RUNNING ) {
                    $kill = Mage :: getModel( 'catalogindex/catalog_index_kill_flag' ) -> loadSelf();
                    $kill -> setFlagData( $flag -> getFlagData() ) -> save();
                    } 
                $flag -> setState( Mage_CatalogIndex_Model_Catalog_Index_Flag :: STATE_QUEUED ) -> save();
                Mage :: getSingleton( 'catalogindex/indexer' ) -> plainReindex();
                $this -> notify( 'Layered Navigation Indices was refreshed successfully', 'blank');
                } 
            catch ( Exception $e ) {
                $this -> notify( $e -> getMessage(), 'warning' );
                }
            try {
                Mage :: getModel( 'catalog/product_image' ) -> clearCache();
                $this -> notify( 'Image cache was cleared successfully', 'blank');
                } 
            catch ( Exception $e ) {
                $this -> notify( $e -> getMessage(), 'warning' );
                }
            try {
                Mage :: getSingleton( 'catalogsearch/fulltext' ) -> rebuildIndex();
                $this -> notify( 'Search Index was rebuilded successfully', 'blank');
                } 
            catch ( Exception $e ) {
                $this -> notify( $e -> getMessage(), 'warning' );
                }
            try {
                Mage :: getSingleton( 'cataloginventory/stock_status' ) -> rebuild();
                $this -> notify( 'CatalogInventory Stock Status was rebuilded successfully', 'blank');
                } 
            catch ( Exception $e ) {
                $this -> notify( $e -> getMessage(), 'warning' );
                }
            try {
                Mage :: getResourceModel( 'catalog/category_flat' ) -> rebuild();
                $this -> notify( 'Flat Catalog Category was rebuilt successfully', 'blank');
                } 
            catch ( Exception $e ) {
                $this -> notify( $e -> getMessage(), 'warning' );
                }
            try {
                Mage :: getResourceModel( 'catalog/product_flat_indexer' ) -> rebuild();
                $this -> notify( 'Flat Catalog Product was rebuilt successfully', 'blank');
                } 
            catch ( Exception $e ) {
                $this -> notify( $e -> getMessage(), 'warning' );
                }
            }  
    
    
    ?>
    

  2. I just ran this code and I got an error saying:


    Using $this when not in object context in cron_refresh_cache.php on line 34

    Maybe amartinez was using it via the magento cron whereas I was using from the os cron?

    Anyways, I solved it by creating a class, wrapping the “refresh_cache()” function in it, and also giving the class a function called “notify” which accepted two parameters, and which just echoed them out.

    Then I created a new instance of this class and called its “refresh_cache” method instead of directly calling “refresh_cache()” like the original code.

    Here’s my modified code:

    #!/usr/bin/php
    <?php
    /**
    * cron_refresh_cache.php
    * 
    * @copyright  copyright (c) 2009 toniyecla[at]gmail.com
    * @license    http://opensource.org/licenses/osl-3.0.php open software license (OSL 3.0)
    */
    
    ( !$_SERVER["HTTP_USER_AGENT"] ) or die ( "Nothing to don" ); // to run via local browser use ($_SERVER["SERVER_ADDR"] == $_SERVER["REMOTE_ADDR"]) 
    
    require_once 'app/Mage.php';
    umask( 0 );
    Mage::app( "default" ); // if getting error change this line to Mage::app(Mage::app()->getStore());  
    $ver = Mage::getVersion();
    $userModel = Mage::getModel( 'admin/user' );
    $userModel -> setUserId( 0 );
    Mage::getSingleton( 'admin/session' )->setUser( $userModel );
    
    echo "Refreshing cache...n";
    Mage::app()->cleanCache();
    $enable = array();
    foreach ( Mage::helper( 'core' )->getCacheTypes() as $type => $label ) {
        $enable[$type] = 1;
        } 
    
    Mage::app()->saveUseCache( $enable ); 
    
    //refresh_cache(); // call refresh function 
    class RefreshCacheCron{
        function notify($message,$type){
            echo date("d/m/Y G:i:s"). " $type: $messagern";
        }
    function refresh_cache() 
        {    
            $this -> notify( 'Refreshing cache' );
            try {
                Mage :: getSingleton( 'catalog/url' ) -> refreshRewrites();
                $this -> notify( 'Catalog Rewrites was refreshed successfully', 'blank');
                } 
            catch ( Exception $e ) {
                $this -> notify( $e -> getMessage(), 'warning' );
                }
            try {
                Mage :: getSingleton( 'catalog/index' ) -> rebuild();
                $this -> notify( 'Catalog Index was rebuilt successfully', 'blank');
                } 
            catch ( Exception $e ) {
                $this -> notify( $e -> getMessage(), 'warning' );
                }
            try {
                $flag = Mage :: getModel( 'catalogindex/catalog_index_flag' ) -> loadSelf();
                if ( $flag -> getState() == Mage_CatalogIndex_Model_Catalog_Index_Flag :: STATE_RUNNING ) {
                    $kill = Mage :: getModel( 'catalogindex/catalog_index_kill_flag' ) -> loadSelf();
                    $kill -> setFlagData( $flag -> getFlagData() ) -> save();
                    } 
                $flag -> setState( Mage_CatalogIndex_Model_Catalog_Index_Flag :: STATE_QUEUED ) -> save();
                Mage :: getSingleton( 'catalogindex/indexer' ) -> plainReindex();
                $this -> notify( 'Layered Navigation Indices was refreshed successfully', 'blank');
                } 
            catch ( Exception $e ) {
                $this -> notify( $e -> getMessage(), 'warning' );
                }
            try {
                Mage :: getModel( 'catalog/product_image' ) -> clearCache();
                $this -> notify( 'Image cache was cleared successfully', 'blank');
                } 
            catch ( Exception $e ) {
                $this -> notify( $e -> getMessage(), 'warning' );
                }
            try {
                Mage :: getSingleton( 'catalogsearch/fulltext' ) -> rebuildIndex();
                $this -> notify( 'Search Index was rebuilded successfully', 'blank');
                } 
            catch ( Exception $e ) {
                $this -> notify( $e -> getMessage(), 'warning' );
                }
            try {
                Mage :: getSingleton( 'cataloginventory/stock_status' ) -> rebuild();
                $this -> notify( 'CatalogInventory Stock Status was rebuilded successfully', 'blank');
                } 
            catch ( Exception $e ) {
                $this -> notify( $e -> getMessage(), 'warning' );
                }
            try {
                Mage :: getResourceModel( 'catalog/category_flat' ) -> rebuild();
                $this -> notify( 'Flat Catalog Category was rebuilt successfully', 'blank');
                } 
            catch ( Exception $e ) {
                $this -> notify( $e -> getMessage(), 'warning' );
                }
            try {
                Mage :: getResourceModel( 'catalog/product_flat_indexer' ) -> rebuild();
                $this -> notify( 'Flat Catalog Product was rebuilt successfully', 'blank');
                } 
            catch ( Exception $e ) {
                $this -> notify( $e -> getMessage(), 'warning' );
                }
            }  
    
    }
    
    $refresher=new RefreshCacheCron();
    $refresher->refresh_cache();
    ?>
    

Leave a Reply

Your email address will not be published. Required fields are marked *