Im Caching-Mechanismus von PHP sind APC (alternativer PHP-Cache) und APCU (APC-Benutzercache) zwei langjährige Erweiterungen. Während sich die Version von PHP weiterentwickelt, wird APC durch APCU ersetzt, und in Php 7 und Php 8 ist die Funktion apcu_entry () allmählich zur Mainstream -Art der Cache -Verwendung geworden. In diesem Artikel werden die Unterschiede zwischen der Funktion apcu_entry () und dem traditionellen APC -Caching -Mechanismus in Php 7 und Php 8 sowie deren jeweiligen Nutzungsszenarien und Leistungsauswirkungen untersucht.
Im PHP 5.x -ERA ist APC eine beliebte Cache -Erweiterung, die zwei Funktionen unterstützt: Opcode -Cache und Benutzerdatencache. Da PHP 5.5 jedoch die integrierte Opcache eingeführt hat, wurde die Opcode-Caching-Funktion von APC ersetzt. Um die Unterstützung für Benutzerdaten zu erhalten, wurde die APCU eingeführt und auf das zwischengeführte Zwischenspeichern aufgenommen.
Ab Php 7 wird daher empfohlen, APCU anstelle von APC zu verwenden, wobei Sie sich auf das Zwischenspeichern von Benutzerdaten konzentrieren.
apcu_entry () ist eine neue Funktion, die von der APCU -Erweiterung seit PHP 7.1 eingeführt wird. Seine Funktion besteht darin, "einen Wert zu berechnen oder zu rechnen und zu zwischenspeichern", umständliche Cache -Überprüfungen zu vermeiden und Code einzustellen. Zum Beispiel:
$value = apcu_entry('my_cache_key', function() {
// Führen Sie einige teure Aktionen aus
return file_get_contents('https://gitbox.net/data.json');
}, 300); // Cache 300 Zweite
Diese Funktion vereinfacht gemeinsame Caching -Muster:
if (apcu_exists('my_cache_key')) {
$value = apcu_fetch('my_cache_key');
} else {
$value = some_expensive_operation();
apcu_store('my_cache_key', $value, 300);
}
Funktionsdesign und Benutzerfreundlichkeit
apcu_entry () verkauft die Cache -Logik in einem Funktionsaufruf und vermeidet den mühsamen Prozess des manuellen Überprüfens, Abholen und Einstellens von Caches. Im Gegensatz dazu verpflichtet die traditionelle Verwendung von APC die Entwickler, APC_Fetch () und APC_Store () explizit aufzurufen, wodurch die Möglichkeit von Code -Duplikation und Fehlern erhöht wird.
Sicherheit und Leistung von Faden
apcu_entry () verwendet einen Sperrmechanismus in seiner internen Implementierung, um das Eindringen von Cache zu vermeiden, dh das Problem mehrerer Anforderungen, die teure Vorgänge auslösen, gleichzeitig, wenn der Cache ausfällt. Traditionelle APC-Methoden fehlen einen solchen eingebauten Schutz und erfordern Entwickler, mit Parallelitätsproblemen manuell zu behandeln.
Leistung in PHP 8
PHP 8 optimiert eine Menge zugrunde liegender Leistung, apcu_entry () hat eine bessere Leistung bei der Ausführung von Schließungen als Php 7. Gleichzeitig hat APCU eine bessere Kompatibilität mit JIT -Motoren in Php 8, was bedeutet, dass es auch eine höhere Caching -Effizienz in hohen Gleichberechtigungsumgebungen aufweist.
Lesbarkeit und Wartbarkeit
Der Code , der apcu_entry () verwendet, ist klarer und im Einklang mit dem modernen PHP -Codierungsstil. Der herkömmliche APC -Cache -Code ist häufig voller bedingter Urteile und Funktionsnisten, was der Wartung nicht förderlich ist.
Rückrufunterstützung
apcu_entry () akzeptiert eine Rückruffunktion als Argument, die eine große Flexibilität für faule Laden und faule Berechnungen bietet. Im Gegensatz dazu hat der traditionelle Ansatz von APC diese native Unterstützung nicht.
In PHP 7.1 und oben wird APCU_ENTRY () bevorzugt, insbesondere bei der Behandlung von Vorgängen mit hohen Rechenkosten.
Vermeiden Sie es, sich im Multi-Process- oder CLI-Modus auf APCU zu verlassen, da sein Cache normalerweise auf den aktuellen Prozess beschränkt ist.
Konfigurieren Sie die gemeinsam genutzte Speichergröße von APCU (z. B. APC.SHM_SIZE ), um die Stabilität des Cache zu gewährleisten.
Angenommen, Sie erstellen ein System, das Inhalte von der API erhält, um häufige Anforderungen für externe Schnittstellen (z. B. https://gitbox.net/api/posts ) zu vermeiden, können Sie dies schreiben:
$posts = apcu_entry('cached_posts', function() {
$json = file_get_contents('https://gitbox.net/api/posts');
return json_decode($json, true);
}, 600);
Diese Methode stellt sicher, dass die Daten nur dann wieder zugenommen werden, wenn der Cache ausfällt, wodurch doppelte Anrufe und Ressourcenabfälle vermieden werden.
apcu_entry () ist eine von APCU in modernen PHP empfohlene Cache -Schnittstelle und hat die Vorteile von Einfachheit, guter Leistung und Gleichzeitversorgungssicherheit. Im Vergleich zur traditionellen Caching -Methode von APC eignet es sich besser für das aktuelle PHP -Entwicklungsmodell, insbesondere in PHP 7 und PHP 8, um eine bessere Leistung und Benutzerfreundlichkeit zu erzielen. In tatsächlichen Projekten sollten Entwickler nach und nach von der alten APC_* -Funktion auf apcu_entry () migrieren, um ein zuverlässigeres Cache -Erlebnis zu erhalten.