• Applies To: All Services
  • Difficulty: Easy
  • Time Needed: 10 minutes
  • Tools Needed: None
  • Reading Time: 8 minutes

Create a file called cleanup.php and add the following code to it:

<?php
/**
 * Magento Maintenance Script
 *
 * @version    3.0.1
 * @author     Crucial Web Hosting <sales@crucialwebhost.com>
 * @copyright  Copyright (c) 2006-2013 Crucial Web Hosting, Ltd.
 * @link       http://www.crucialwebhost.com  Crucial Web Hosting
 */

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);
    }
}

Save the file to the directory where Magento resides.

Next, login to cPanel and click on the Cron Manager link.

In the Add Cron Job section, select Once a day from the Common Settings dropdown list. 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

Once you have this set at your preferred interval, click the Add Cron Job button.

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

Now click the Add Cron Job button.

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.