Symfony2: Den Cache selbst verwalten
Webagentur » Digitale Nachrichten » Symfony2: Den Cache selbst verwalten

Symfony2: Den Cache selbst verwalten

Der Cache ist überall im Computing und glücklicherweise auch anderswo vorhanden. Ohne sie wären die Bearbeitungszeiten viel länger! In einer Zeit, in der alle Frameworks, die diesen Namen verdienen, ein Cache-System verwenden, warum sollten wir den Cache selbst verwalten?

Zwischenspeichern in Symfony2

In Symfony2 können Sie ganz einfach ein Cache-System einrichten. Außerdem, wenn wir genau sein wollten, sieht es so aus, als hätte Symfony ein eigenes Cache-System (app/cache/env/), und dass wir auch ein Cache-System auf Serverebene einbauen können (Apache, IIS, …). Dieser Cache ist vollständig verwaltbar und der Speicher ist flüchtig. Sobald der Server neu gestartet wird, wird der Server-Cache gelöscht.

Caching-Systeme

Welche Caching-Systeme gibt es? Aus dem Gedächtnis kommen regelmäßig drei Programme.

  • XCache
  • Memcached
  • APC
    APC ist jetzt veraltet seit PHP 5.4, daher empfehle ich nicht, es einzustecken.

In meinem Fall werde ich XCache verwenden. Sie können auch meinen Beitrag zur Installation von XCache finden.

Warum Ihren Cache selbst verwalten

Ich kann ein paar Kommentare sehen, die hereinkommen und fragen: „Warum? ". Während Doctrine es Ihnen ermöglicht, den Cache über seine Methode einfach zu verwenden useResultCache(Verwendung, Verzögerung, ID). Meine Antwort ist einfach: Kostenlose Behandlungen durchführen.

Ein kleines Beispiel, um Ihnen einige Ideen zu geben. Angenommen, ich speichere ein Element aus einer Datenbank. Wenn ich diese Entität ändere, wird der Cache nicht aktualisiert, bis die Daten abgelaufen sind. Mit einem personalisierten Cache-Management werde ich in der Lage sein, noch bevor der Cache die vorgesehene Zeit erreicht, die neuen Daten zurückzusetzen und die alten zu überschreiben. Dies erfordert ein umfangreiches Management, aber die Leistungssteigerungen können erheblich sein.

Symfony2 und wie man seinen eigenen Cache verwaltet

Ich biete Ihnen dieses kleine Code-Memo zur einfachen Verwaltung an. In unserem Fall zielt die Funktion dieses Gist darauf ab, das Ergebnis einer SQL-Abfrage zurückzugeben.

Prototyp: function execute ($sql_query, $id = null, $delay = 3600);
Einstellungen:

  1. _sqlquery entspricht der SQL-Abfrage, die Sie ausführen möchten.
  2. id ist die an die zwischengespeicherten Daten gebundene Kennung. Für eine ID x haben Sie einen Inhalt x.
  3. verzögern ist die maximale Gültigkeitsdauer des Caches. Standardmäßig 3600 Sekunden. Das bedeutet, dass Ihre Daten nach dem Zwischenspeichern 3600 Sekunden lang verfügbar sind.
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    Funktion ausführen ($sql_query, $id = null, $delay = 3600)
    {
    // Wir deklarieren eine Cache-Instanz
    $cacheDriver = neu DoctrineCommonCacheXcacheCache();
    $ergebnisse = null;
    //Wenn eine ID eingegeben wurde und das Cache-System Daten für eine ID "x" enthält
    if ($id!= null && $cacheDriver->enthält($id)) {
    //Dann nehmen wir die zwischengespeicherten Daten für eine ID "x"
    $results = $cacheDriver->fetch($id);
    }
    //Wenn keine Daten vorhanden sind, falls die zwischengespeicherten Daten gleich null sind
    if ($Ergebnisse == null) {
    //Wir rufen die Daten ab
    $ergebnisse = $ This->Behälter->holen("Lehre")->getManager()->getRepository("NamespaceNameBundle: Entität")->findAll();
    //Wenn wir eine Caching-ID haben
    if ($id!= null) {
    //Wir speichern die Daten für eine ID x und für eine Verzögerung y
    $cacheDriver->save($id, $results, intval($delay));
    }
    }
    //Wir geben die Ergebnisse zurück, indem wir zukünftige Anfragen einschränken
    Rückkehr $Ergebnisse;
    }

Nun, ich hoffe, dieses Memo hilft Ihnen. Bis bald und vielen Dank für das Lesen dieses Beitrags!

★ ★ ★ ★ ★