Aufräumen im Backend: wenn die Tabellen mal wieder überlaufen

Ein Kunde ruft an und bemängelt, dass das Powermail-Modul im TYPO3-Backend nicht mehr nutzbar ist. Was ist da los? Ein Blick ins Backend verrät die Ursache schnell: in den Tabellen tx_powermail_domain_model_mail und tx_powermail_domain_model_answer haben sich hunderttausende von Datensätzen angesammelt. Das bringt das Powermail-Modul aus dem Tritt und es verweigert den Dienst.
Wer keinen Wert auf die Speicherung der Mails der letzten fünf Jahre legt, dem sei der TYPO3-Planer ans Herz gelegt: hier gibt es Tasks, die man aktivieren kann, um die Tabellen (sowie die sys_log, und – je nach installierten Extensions – auch noch weitere) in regelmäßigen Abständen aufzuräumen. Der Task ist schnell konfiguriert:
Unter "Klasse" wählt man zunächst "Tabellen-Müllsammlung" aus. Der Typ sollte "wiederkehrend" sein (der Task soll schließlich regelmäßig ausgeführt werden, oder?) und unter "Häufigkeit" bietet sich eine wöchentliche Ausführung mit 604800 Sekunden an.
Den Startpunkt setzt man am besten in die Nacht, optimalerweise den Tag auch aufs Wochenende. Unter "Zu bereinigende Tabelle" kann dann die gewünschte Tabelle gewählt werden, und unter "Einträge löschen, die älter sind als die angegebene Anzahl Tage" wird definiert, welches Alter die zu löschenden Datensätze haben soll. Dieser Wert ist sicherlich individuell verschieden; für Mails bot sich in aktuellen Fall ein halbes Jahr an.
Nun startet der Scheduler-Task wöchentlich zur vereinbarten Zeit und kann vom Cronjob abgeholt werden. Ergebnis ist ein wieder benutzbares Powermail-Modul und schlanke Backups, die nicht von alten Datensätzen dominiert werden.
Auch eigene Tabellen können über die folgende Konfiguration der Auswahl zu bereinigender Tabellen hinzugefügt werden:
$GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS']['scheduler']['tasks']['tx_scheduler_TableGarbageCollection']['options']['tables'] = array(
        'tx_myext_domain_model_foo' => array(
                'dateField' => 'tstamp',
                'expirePeriod' => '180'
        ),
        'tx_myext_domain_model_bar' => array(
                'expireField' => 'expire'
        )
);

Kategorien

Devblog

Tags

TYPO3 PHP

Hat Dir der Artikel gefallen?