繁体   English   中英

如何清理 Magento 缓存?

[英]How to clean Magento cache?

我需要一个简单的脚本来刷新 Magento 缓存的每个元素。 我正在运行 1.3.2.3 并且无法升级。

用于刷新 magento 缓存的示例 cron 作业脚本:(该脚本发布在amartinez 的magento 论坛中)

通过 cron 作业运行

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

php 文件:

#!/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 do\n" ); // 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' );
            }
        }  


?>

我刚刚运行了这段代码,但出现错误提示:

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

也许amartinez是通过 magento cron 使用的,而我是通过 os cron 使用的?

无论如何,我通过创建一个类来解决它,将“refresh_cache()”函数包装在其中,并为该类提供一个名为“notify”的函数,该函数接受两个参数,然后将它们回显出来。

然后我创建了这个类的一个新实例,并调用了它的“refresh_cache”方法,而不是像原始代码那样直接调用“refresh_cache()”。

这是我修改后的代码:

#!/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 do\n" ); // 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: $message\r\n";
    }
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();
?>

删除/var/cache/

如果你也想清理你的数据库: http : //www.magentocommerce.com/wiki/groups/227/maintenance_script

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM