Magento Shop - Logs löschen
Wer einen größeren Magento-Shop betreibt stößt nach kurzer Zeit auf folgendes Problem: Die MySQL-Datenbank des Shops wächst extrem an. Ursache dafür sind die Tabellen log_url, log_url_info, log_visitor und log_visitor_info. Hier schreibt Magento unzählige Datenbank-Einträge. Das schluckt dann gerne mal einige Gigabyte an Speicher. Meist hat man eine Webanalyse-Sofware für Google Analytics oder ähnliches am Laufen, somit sind die Logs in Magento selbst nicht immer nötig.
Eine kurze Recherche offenbart (siehe diesen Magento-Thread),
dass diese Log-Tabellen mit ‚TRUNCATE tabellen_name’ problemlos geleert
werden können (man sollte sie aber nicht löschen). Optimal wäre es nun,
wenn dieser Vorgang mit Hilfe eines Cronjobs in regelmäßigen Abständen
automatisch ausgeführt würde.
Im Magento Wiki findet man dazu ein Maintenance Script, das dies auf einer sehr basalen Ebene erledigt. Schöner wäre es allerdings, die Magento-Cronjob-Funktionalität zu nutzen.
Dazu haben wir ein Modul Maintenance erstellt, dessen etc/config.xml wie folgt aussieht:
Das bedeutet: Es wird an jedem 25. eines Monats um 23 Uhr im Modul Maintenance die Funktion cleanLogTables der Model-Klasse Observer aufgerufen. Diese Funktion sorgt dann auf denkbar einfache Weise dafür, dass die Log-Tabellen geleert werden:
und das war's.
Kleiner Wermutstropfen:
Unmittelbar nach der Löschung der Einträge ist die Admin-Funktionalität "Kunden Online" nicht mehr verfügbar, da die Datenbank keine aktuellen Datensätze mehr enthält. Dies erholt sich aber nach kurzer Zeit, bzw. dem ersten Besucher.