Systemwartung: Cachebereinigung nutzen

Aus Contao Community Documentation

Allgemeine Informationen

Unter System -> Systemwartung bietet das Contao-Backend die Möglichkeit der Bereinigung von Tabellen und Verzeichnissen. Darüberhinaus gibt es noch eine benutzerdefinierte Möglichkeit der Bereinigung. Hier ein Screenshot aus einem Backend einer Contao-3.5.28-Installation:

Systemwartung bild1.jpg

Um die Bereinigung in eigenen Erweiterungen zu nutzen, muß die config/config.php bearbeitet werden.

Tabellen bereinigen

$GLOBALS['TL_PURGE']['tables']['meine_erweiterung'] = array
(
	'callback' => array('Namensraum\Klasse','purgeCache'),
	'affected' => array('tl_tabelle1','tl_tabelle2')
);

Die Callback-Funktion wird nur ausgeführt, wenn das Häkchen gesetzt und die Bereinigung damit gestartet wurde. Bei der bloßen Anzeige der Systemwartung passiert noch nichts. Mit dem Bereinigen an sich hat die Callback-Funktion nichts zu tun, aber kann man z.B. in Logdateien schreiben oder irgendetwas anderes machen.
Für die in affected angegebenen Tabellen ermittelt Contao die Anzahl der Einträge und den Speicherplatz und zeigt diese Informationen im Backend an, siehe Screenshot oben.

Verzeichnisse bereinigen

$GLOBALS['TL_PURGE']['folders']['meine_erweiterung'] = array
(
	'callback' => array('Namensraum\Klasse','purgeCache'),
	'affected' => array('assets/meincache','system/cache/auchmeincache')
);

Die Callback-Funktion wird nur ausgeführt, wenn das Häkchen gesetzt und die Bereinigung damit gestartet wurde. Bei der bloßen Anzeige der Systemwartung passiert noch nichts. Mit dem Bereinigen an sich hat die Callback-Funktion nichts zu tun, aber kann man z.B. in Logdateien schreiben oder irgendetwas anderes machen.
Für die in affected angegebenen Verzeichnisse ermittelt Contao die Anzahl der Dateien und zeigt diese Informationen im Backend an, siehe Screenshot oben.

Benutzerdefiniert bereinigen

$GLOBALS['TL_PURGE']['custom']['meine_erweiterung'] = array
(
	'callback' => array('Namensraum\Klasse','purgeCache')
);

Die Callback-Funktion wird nur ausgeführt, wenn das Häkchen gesetzt und die Bereinigung damit gestartet wurde. Bei der bloßen Anzeige der Systemwartung passiert noch nichts. In der Callback-Funktion müssen Sie im Gegensatz zu den beiden anderen Möglichkeiten alles selbst machen, also auch Ihre Bereinigungsaufgaben. Ein affected-Array wird bei custom nicht benötigt.

Der zweite Screenshot zeigt zwei benutzerdefinierte Bereinigungsfunktionen:

Systemwartung bild2.jpg

Um in die Anzeige ein paar Detailinformationen zur bevorstehenden Bereinigung zu bekommen, muß man etwas tricksen:

Sprachvariablen

In der Datei languages/de/tl_maintenance.php können die deutschen Übersetzungen für die Anzeige abgespeichert werden. Für das Beispiel im zweiten Screenshot sieht das so aus:

$GLOBALS['TL_LANG']['tl_maintenance_jobs']['dewis'] = array('DeWIS-Cache leeren','Löscht den Cache der DeWIS-Abfrage. Dieser Cache kann in den Backend-Einstellungen dauerhaft deaktiviert werden.');
// Ausgabe ergänzen
$GLOBALS['TL_LANG']['tl_maintenance_jobs']['dewis'][0] .= \Samson\DeWIS\DeWIS::calcCache();

Die Funktion calcCache ist bei mir für die Detailinformationen zuständig. Die werden einfach an das Label rangehangen.

Ansichten
Meine Werkzeuge

Contao Community Documentation

Programmierer brauchen viel Bit, auch wenn es Beck's ist.

Christian Schiffler
Navigation
Verstehen
Verwenden
Entwickeln
Verschiedenes
Werkzeuge