WSC 5.2 WSC 5.3 AbstractCacheBuilder

  • Die AbstractCache-Klasse ist im WCF die Mutterklasse aller Cache Dateien.

    1 Erklärung


    Die AbstractCache-Klasse ist im WSC die Mutterklasse aller Cache Dateien. Ein Cache wird immer dann angelegt, wenn sich Daten selten ändern, aber oft ausgelesen werden müssen. Um so z.B. die Datenbankabfragen zu minimieren, werden die Daten aus der Datenbank im Cache gespeichert, so dass hierauf sehr performant zugegriffen werden kann. Wie alle PHP-Dateien muss auch eine Ableitung der AbstractCache-Klasse mittels des files-PiP installiert werden. Alle Cache-Dateien befinden sich im Ordner Endanwendung/lib/system/cache/builder.


    2 Die AbstractCache auf GitHub


    https://github.com/WoltLab/WCF/blob/master/wcfsetup/install/files/lib/form/AbstractForm.class.php


    3 Verfügbare Variabeln und Funktionen


    3.1 $maxLifetime


    Die Variabel $maxLifetime gibt die Zeit zwischen der Cache Erstellung und einer automatischen Erneuerung des Caches in Sekunden an.


    3.2 rebuild()


    Die Funktion rebuild() wird immer dann aufgerufen, wenn der Cache nicht existiert bzw. nicht mehr existiert und die Daten neu aus der Quelle eingelesen werden müssen.


    3.3 getMaxLifetime()


    Normalerweise muss man diese Funktion nicht überschreiben. Diese gibt lediglich eine maximale Lebensdauer des Caches zurück. Standartmäßig ist $this->maxLifetime = 0, was diese Funktion fast überflüssig macht, da somit keine automatische Leerung des Caches stattfindet.


    3.4 reset()


    Möchte man neben der normalen Leerung des Caches noch weitere Aufgaben erledigen, stünde einem diese Funktion zur Verfügung. Ebenso wie die Funktion getMaxLifeTime() wird auch diese Funktion fast nie gebraucht.


    4 Arbeiten mit einem Cache


    4.1 Abrufen der Daten


    Daten kann man mittels folgenden Codefragment abrufen

    PHP
    NameDesCacheBuilder::getInstance()->getData();


    Hat man allerdings größere Datenmengen, die z.B. zu einer ID passend sind, kann man an dieser Stelle bereits mit dem Parameter $parameters arbeiten, welcher von Typ Array ist.

    PHP
    NameDesCacheBuilder::getInstance()->getData(['fooID' => $this->fooID]);

    Mit diesem Beispiel erhaltet ihr alle Daten zurück, die zu der Variabel $this->fooID passen.



    4.2 Zurücksetzen der Daten


    Sobald man Daten verändert hat, neue Datensätze hinzugefügt hat, sollte der Cache auf den neuesten Stand gebracht werden. Damit nicht weiterhin falsche Daten an den Clienten gesand werden, muss der Cache zurückgesetzt bzw. geleert werden.


    PHP
    NameDesCacheBuilder::getInstance()->reset();

    Möchte man wiederum nur die Daten anhand des Parameters $parameters zurücksetzen, sähe der Code wie folgt aus:

    PHP
    NameDesCacheBuilder::getInstance()->reset(['fooID' => $this->fooID]);


    5 Komplettes Beispiel eines Caches



    6 Gut zu wissen

    • Der Klassenname/Dateiname sollte immer mit CacheBuilder aufhören. Beispiele : ExampleCacheBuilder, TestCacheBuilder, CategoryCacheBuilder etc.
    • Auch wenn es anders möglich ist, sollte der Cache Dateien immer im Pfad ea/lib/system/cache/builder/ abgelegt werden.

Share