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'
)
);
Hat dir der Artikel gefallen?
Werkraum News:

Toller Podcast zu Künstliche Intelligenz von Sascha Lobo
Wir von werkraum träumen ja schon seit langem vom eigenen Podcast, wäre das nicht immer so viel spannende Projekte, die es zu erledigen gibt. Solange hören wir einfach andere…
Matomo im DDEV installieren
Ich zeige euch wie man eine lokale Matomo Instanz im DDEV nutzen kann.
Strukturierte Daten - schema.org
Suchmaschinen mit den richtigen Daten füttern ist einfacher als man denkt.