Magento Opschonen
We hebben al eerder over geschreven over hoe je bepaalde Magento taken automatisch uit kan laten voeren. Dit artikel is iets specfieker en legt uit hoe je Magento logbestanden automatisch kunt verwijderen. Magento slaat heel veel data op in de database en op je webserver en vervuilt zo je webshop.
Hoe kun je deze data op vaste tijdstippen verwijderen om jouw Magento webshop schoon te houden?
Getest op Magento CE 1.4.x en 1.5.x.
Maak een bestand aan cleanup.php , plak onderstaande code daarin en plaats dit in de hoofdmap waar Magento is geïnstalleerd.
< ?php
$xml = simplexml_load_file('./app/etc/local.xml', NULL, LIBXML_NOCDATA);
$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;
if($_GET['clean'] == 'log') clean_log_tables();
if($_GET['clean'] == 'var') clean_var_directory();
function clean_log_tables() {
global $db;
$tables = array(
'catalogindex_aggregation',
'catalogindex_aggregation_tag',
'catalogindex_aggregation_to_tag',
'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',
'report_event'
);
mysql_connect($db['host'], $db['user'], $db['pass']) or die(mysql_error());
mysql_select_db($db['name']) or die(mysql_error());
foreach($tables as $v => $k) {
mysql_query('TRUNCATE `'.$db['pref'].$k.'`') or die(mysql_error());
}
}
function clean_var_directory() {
$dirs = array(
'downloader/.cache/*',
'downloader/pearlib/cache/*',
'downloader/pearlib/download/*',
'var/cache/',
'var/log/',
'var/report/',
'var/session/',
'var/tmp/'
);
foreach($dirs as $v => $k) {
exec('rm -rf '.$k);
}
}
We moeten er nu voor zorgen dat dit bestand op bepaalde momenten automatisch uitgevoerd wordt.
Als je Magento op een linux server draait en je hebt shell toegang dan kun je een cronjob aanmaken.
Run in de shell het commando ‘crontab -e’ uit en plak onderstaande tekst daarin.
#OPSCHONEN MAGENTO #elke zondag om 0:00 AM opschonen logtabellen in database 0 0 * * 0 curl -s -o /dev/null http://www.jouwwebshop.nl/cleanup.php?clean=log #elke 1e dag v/d maand om 0:00 AM opschonen bestanden op webserver 0 0 1 * * curl -s -o /dev/null http://www.jouwwebshop.nl/cleanup.php?clean=var
Biedt jouw Magento hostingprovider geen shell toegang, maar bijvoorbeeld wel toegang tot cPanel of een ander beheerscherm kun je daar ook de cronjob configureren.
Succes met je Magento Webshop !
