Loading...

Knowledge Base
Categories:

Magento Log and Cache Maintenance Script

Share
  1. Create a file called cleanup.php and add the following code to it (where your specific info is subbed into the section below 'Magento Maintenance Script')

    <?php
    /**
     * Magento Maintenance Script
     *
     * @version    3.0.1
     * @author     Web Hosting Company <[email protected]>
     * @copyright  Copyright (c) 2006-2013 Web Hosting Company
     * @link       http://www.thatsite.com  Web Hosting Company
     */
    
    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(
                '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/*',
            'media/css/',
            'media/css_secure/',
            'media/import/',
            'media/js/',
            'var/cache/',
            'var/locks/',
            'var/log/',
            'var/report/',
            'var/session/',
            'var/tmp/'
        );
        
        foreach($dirs as $dir) {
            exec('rm -rf '.$dir);
        }
    }
  2. Save the file to the directory where Magento resides

  3. Log into cPanel and click the Cron Manager link

  4. In the Add Cron Job section, select Once a day from the Common Settings dropdown list

  5. In the Command field, enter the following line of code, making sure to replace the domain name with your own:

    curl -s -o /dev/null http://www.domain.com/cleanup.php?clean=log
     
  6. Once you have this set at your preferred interval, click the Add Cron Job button

  7. Repeat the same steps as you did before, but change the Common Settings dropdown selection to 1st and 15th, and add the following line of code to the Command field:

    curl -s -o /dev/null http://www.domain.com/cleanup.php?clean=var
    ​
    
  8. Now click the Add Cron Job button

  9. While you're on this page, it's a good idea to set the Email Address to something other than your username, otherwise your mail/new directory will fill up very quickly every time a cron job runs (assuming it produces output); You can leave it blank or use an actual email address

Did you find this article helpful?

 
* Your feedback is too short

Loading...