Heim >Backend-Entwicklung >PHP-Problem >Detaillierte Einführung in das Caching-System, das mit PHP: APCu-Erweiterung geliefert wird
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.
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.
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.
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
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.
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!