Pregunta

Necesito borrar todo el caché y registrar el script de PHP.

Cualquier ayuda.

¿Fue útil?

Solución

Cree un archivo llamado Cleanup.php y agréguelo el siguiente código:

    <?php
switch($_GET['clean']) {
    case 'log':
        clean_log_tables();
    break;
    case 'var':
        clean_var_directory();
    break;
}

function clean_log_tables() {
    $xml = simplexml_load_file('./app/etc/local.xml', NULL, LIBXML_NOCDATA);

    if(is_object($xml)) {
        $db['host'] = $xml->global->resources->default_setup->connection->host;
        $db['name'] = $xml->global->resources->default_setup->connection->dbname;
        $db['user'] = $xml->global->resources->default_setup->connection->username;
        $db['pass'] = $xml->global->resources->default_setup->connection->password;
        $db['pref'] = $xml->global->resources->db->table_prefix;

        $tables = array(
            'adminnotification_inbox',
            'aw_core_logger',
            'dataflow_batch_export',
            'dataflow_batch_import',
            'log_customer',
            'log_quote',
            'log_summary',
            'log_summary_type',
            'log_url',
            'log_url_info',
            'log_visitor',
            'log_visitor_info',
            'log_visitor_online',
            'index_event',
            'report_event',
            'report_viewed_product_index',
            'report_compared_product_index',
            'catalog_compare_item',
            'catalogindex_aggregation',
            'catalogindex_aggregation_tag',
            'catalogindex_aggregation_to_tag'
        );

        mysql_connect($db['host'], $db['user'], $db['pass']) or die(mysql_error());
        mysql_select_db($db['name']) or die(mysql_error());

        foreach($tables as $table) {
            @mysql_query('TRUNCATE `'.$db['pref'].$table.'`');
        }
    } else {
        exit('Unable to load local.xml file');
    }
}

function clean_var_directory() {
    $dirs = array(
        'downloader/.cache/',
        'downloader/pearlib/cache/*',
        'downloader/pearlib/download/*',
        'var/cache/',
        'var/locks/',
        'var/log/',
        'var/report/',
        'var/session/',
        'var/tmp/'
    );

    foreach($dirs as $dir) {
        exec('rm -rf '.$dir);
    }
}

Guarde el archivo en el directorio raíz de Magento.

Ejecute la siguiente URL para la limpieza del registro

http://www.domain.com/cleanup.php?clean=log

Ejecute la siguiente URL para la limpieza de caché

http://www.domain.com/cleanup.php?clean=var

Otros consejos

Es lo mejor de hacer esto desde la línea de comandos usando una terminal SSH o un Cronjob

# rm -Rf /home/domain.com/www/var/cache/*
# rm -Rf /home/domain.com/www/var/log/*

Esto será más confiable que usar PHP

Puede llamar a lo siguiente desde PHP.

Mage::app()->cleanCache();
  • Para el registro limpio, el script de shell ya existe en el directorio de ruta a magento/shell:

    php log.php 
    Usage:  php -f log.php -- [options]
            php -f log.php -- clean --days 1
    
      clean             Clean Logs
      --days      Save log, days. (Minimum 1 day, if defined - ignoring system value)
      status            Display statistics per log tables
      help              This help
  • Para el caché limpio, los siguientes métodos lo ayudarán a hacer un script de shell:

    // Clean js and css
    Mage::getModel('core/design_package')->cleanMergedJsCss();
    Mage::dispatchEvent('clean_media_cache_after');
    
    // product image
    Mage::getModel('catalog/product_image')->clearCache();
    Mage::dispatchEvent('clean_catalog_images_cache_after');
    
    // Get cache types
    Mage::app()->getCacheInstance()->getTypes()
    
    // Clean specific tags
    Mage::app()->cleanCache($tags);
    
    // dispatch event if you flush all cache tags
    Mage::app()->cleanCache($alltags);
    Mage::dispatchEvent('adminhtml_cache_flush_system');
    

Sistema GOTO-> Cache Management-> Flush Magento Cache desde el panel de administración o el directorio VAR/Cache Borrar.

Sugeriría que primero intenta encontrar las tablas con la mayoría de las filas y el tamaño usando SQL:

SELECT
  TABLE_NAME AS "Table",
  TABLE_ROWS AS "Rows #",
  ROUND(
    (DATA_LENGTH + INDEX_LENGTH) / 1024 / 1024,
    2
  ) AS "Size (MB)"
FROM
  information_schema.TABLES
WHERE information_schema.TABLES.TABLE_SCHEMA = 'database-name'
  AND (
    TABLE_NAME LIKE 'log_%'
    OR TABLE_NAME LIKE 'report_%'
    OR TABLE_NAME LIKE 'dataflow_%'
    OR TABLE_NAME = 'catalog_compare_item'
  )
ORDER BY TABLE_ROWS DESC

Y puede ejecutar la operación truncada en las tablas de registro.

TRUNCATE dataflow_batch_export;
TRUNCATE dataflow_batch_import;
TRUNCATE log_customer;
TRUNCATE log_quote;
TRUNCATE log_summary;
TRUNCATE log_summary_type;
TRUNCATE log_url;
TRUNCATE log_url_info;
TRUNCATE log_visitor;
TRUNCATE log_visitor_info;
TRUNCATE log_visitor_online;
TRUNCATE report_viewed_product_index;
TRUNCATE report_compared_product_index;
TRUNCATE report_event;
TRUNCATE index_event;
TRUNCATE catalog_compare_item;

Para más, visite: https://blog.magepsycho.com/how-to-find-the-size-rows-of-magento-database-tables/

Licenciado bajo: CC-BY-SA con atribución
No afiliado a magento.stackexchange
scroll top