Heim  >  Artikel  >  Backend-Entwicklung  >  Detaillierte Einführung in das Caching-System, das mit PHP: APCu-Erweiterung geliefert wird

Detaillierte Einführung in das Caching-System, das mit PHP: APCu-Erweiterung geliefert wird

醉折花枝作酒筹
醉折花枝作酒筹nach vorne
2021-06-09 17:06:083144Durchsuche

In diesem Artikel wird Ihnen das Caching-System, das mit der PHP-Erweiterung APCu geliefert wird, ausführlich vorgestellt. Es hat einen gewissen Referenzwert. Freunde in Not können sich darauf beziehen. Ich hoffe, es wird für alle hilfreich sein.

Detaillierte Einführung in das Caching-System, das mit PHP: APCu-Erweiterung geliefert wird

Ich glaube, jeder hat Caching-Systeme wie Memcached oder Redis für das tägliche Caching verwendet, um dem Datenverkehr zu widerstehen oder um einige häufig verwendete heiße Daten zu speichern. Tatsächlich wurde PHP auch für verwendet Wir haben ein einfaches Caching-System vorbereitet, das die Entwicklung unserer täglichen Websites im Normalmaßstab vollständig bewältigen kann. Dieser Erweiterungssatz ist die APCu-Erweiterung.

APCu-Erweiterung

Die APCu-Erweiterung ist ein Upgrade der APC-Erweiterung, die nicht mehr gepflegt wird. Beide Erweiterungssätze basieren tatsächlich auf Opcode-Caching. Das heißt, die Caching-Funktion, die durch PHPs eigenen Opcode implementiert wird.

Die Installation von APCu ist wie eine gewöhnliche PHP-Erweiterung. Das Wichtigste ist, dass diese Erweiterung sehr klein ist. Sowohl der Download als auch die Installation können in Sekundenschnelle abgeschlossen werden. Daher lässt es sich sehr bequem auf kleine Projekte anwenden, wird nativ von PHP unterstützt und erfordert keine zusätzliche Konfiguration wie Ports.

Methodenbeschreibung

Das Hinzufügen, Löschen, Abfragen, automatische Inkrementieren und andere Funktionen, über die Cache-Systeme im Allgemeinen verfügen, verfügen über entsprechende Implementierungen in der APCu-Erweiterung.

  • apcu_add – Einen neuen Cache erstellen

  • apcu_cache_info – Alle Cache-Informationen von APCu anzeigen

  • apcu_cas – Einen zwischengespeicherten Wert auf einen neuen Wert aktualisieren

  • apcu_clear_cache – Alle Caches löschen

  • apcu_dec – Den Cache-Wert verringern

  • apcu_delete – Einen zwischengespeicherten Inhalt löschen

  • apcu_enabled – Ob APCu-Cache in der aktuellen Umgebung aktiviert werden soll

  • apcu_entry – Atomar eine Cache-Entität generieren

  • apcu_ existiert – prüfen Ob Der Cache existiert

  • apcu_fetch – Abfrage des Caches

  • apcu_inc – Erhöhen des Cache-Werts

  • apcu_sma_info – Abfrage der zwischengespeicherten Shared-Memory-Informationen

  • apcu_store – Speichern eines Caches

Nutzungsdemo

apcu_add("int", 1);
apcu_add("string", "I'm String");
apcu_add("arr", [1,2,3]);

class A{
    private $apc = 1;
    function test(){
        echo "s";
    }
}

apcu_add("obj", new A);

var_dump(apcu_fetch("int"));
var_dump(apcu_fetch("string"));
var_dump(apcu_fetch("arr"));
var_dump(apcu_fetch("obj"));

Die normale Verwendung ist relativ einfach. Alle Arten von Daten, die wir hinzufügen, können normal im Cache gespeichert werden. Es ist jedoch zu beachten, dass wir das Objekt direkt im APCu-Cache speichern können, ohne es oder JSON in einen String zu serialisieren. Das System serialisiert es automatisch für uns.

apcu_add(string $key, Mixed $var [, int $ttl = 0]) Die Methode besteht darin, normalerweise einen Cache hinzuzufügen, der auch in Sekunden festgelegt werden kann lange gültig. Beachten Sie, dass das Cache-Zeitlimit von APCu in einer CLI gültig ist. Durch einen erneuten Aufruf der CLI wird der in der letzten CLI festgelegte Cache-Inhalt nicht abgerufen. In PHP-FPM wird der Cache nach einem Neustart von PHP-FPM oder FastCGI ungültig.

Als nächstes konzentrieren wir uns auf das Testen einiger weniger verbreiteter Methoden.

apcu_cas("int", 1, 2);
var_dump(apcu_fetch("int"));

// Warning  apcu_cas() expects parameter 2 to be int
apcu_cas("string", "I'm String", "I'm  New String");

apcu_cas(string $key, int $old, int $new) dient dazu, einen $old-Wert in einen $new-Wert zu ändern. Es kann nur der Inhalt eines numerischen Typs geändert werden, es kommt zu einem Fehler gemeldet werden. Welche Vorteile bietet diese Funktion? Sein größter Vorteil besteht darin, dass es atomar ist, das heißt, es wird nicht durch hohe Parallelität beeinträchtigt. Ähnlich ist es mit der Methode apcu_store(string $key, Mixed $var [, int $ttl = 0]), aber diese Methode ändert einfach den Inhalt eines Caches. Wenn der Cache-Schlüssel nicht vorhanden ist, erstellen Sie ihn ist nicht auf den Typ beschränkt und sicherlich nicht atomar.

apcu_entry("entry", function($key){
    return "This is " . $key;
});
var_dump(apcu_fetch("entry"));

apcu_entry(string $key , callable $generator [, int $ttl = 0 ]) Die Funktion dieser Funktion besteht darin, die anonyme Funktion $generator auszuführen und $key als Schlüsselwert zu verwenden, wenn der Cache $key nicht existiert Übergeben Sie es und generieren Sie dann einen Inhalt als Wert dieses Caches oder geben Sie ihn zurück.

var_dump(apcu_cache_info());

Wenn wir schließlich alle APCu-Cache-Informationen im aktuellen System anzeigen möchten, können wir direkt die Funktion apcu_cache_info() verwenden.

Zusammenfassung

Wenn sich viele Daten im Cache befinden, wird auch ein APCUIterator-Iterator bereitgestellt, der uns die Durchführung von Schleifenabfragen und zugehörigen Statistiken zu Cache-Informationen erleichtert. Kurz gesagt, dieses System ist ein sehr praktisches Caching-System im kleinen Maßstab, und Sie können versuchen, einige kleine Funktionen in der täglichen Entwicklung zu verwenden.

Testcode:

https://github.com/zhangyue0503/dev-blog/blob/master/php/202004/source/%E6%88%91%E4%BB%AC%E4%B9%9F%E6%9C%89%E8%87%AA%E5%B8%A6%E7%9A%84%E7%BC%93%E5%AD%98%E7%B3%BB%E7%BB%9F%EF%BC%9APHP%E7%9A%84APCu%E6%89%A9%E5%B1%95.php

Empfohlenes Lernen: php-Video-Tutorial

Das obige ist der detaillierte Inhalt vonDetaillierte Einführung in das Caching-System, das mit PHP: APCu-Erweiterung geliefert wird. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:segmentfault.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen