In der PHP -Entwicklung ist APCU eine sehr effiziente Erweiterung des Benutzerdaten -Cache, die die Skriptleistung erheblich verbessern kann, insbesondere in Szenarien, in denen häufig wiederholte Berechnungen bezeichnet werden. Obwohl APCU hauptsächlich in Webumgebungen verwendet wird, kann er auch zum CLI -Modus (CACKing in Befehlszeilen) verwendet werden, und es sind nur einige Konfigurationen und Vorsichtsmaßnahmen erforderlich. In diesem Artikel wird vorgestellt, wie die Funktion apcu_entry () verwendet wird, um effizientes Caching in der CLI -Umgebung zu erreichen und ein Beispiel für die Nutzung zu geben.
apcu_entry () ist eine Komfortfunktion, die in der APCU -Erweiterung bereitgestellt wird, um den Cache -Vorgänge zu vereinfachen. Es akzeptiert einen Schlüsselnamen und eine Rückruffunktion als Argumente. Wenn der Cache einen entsprechenden Schlüssel enthält, wird der zwischengespeicherte Wert direkt zurückgegeben. Wenn nicht, wird eine Rückruffunktion ausgeführt, um den Wert zu erhalten und das Ergebnis zu leiten.
Die Syntax ist wie folgt:
mixed apcu_entry(string $key, callable $callback, int $ttl = 0)
$ Schlüssel : Cacheschlüsselname.
$ Callback : Eine Rückruffunktion, die zwischengespeicherten Inhalten generiert.
$ ttl : zwischengespeicherte Überlebenszeit (Einheit: Sekunden), optional.
Standardmäßig wird APCU im CLI -Modus ausgeschaltet. Um apcu_entry () in der Befehlszeile zu verwenden, müssen Sie die Konfigurationsdatei ändern oder in der Befehlszeile explizit aktivieren:
php -d apc.enable_cli=1 your_script.php
Oder php.ini modifizieren:
apc.enable_cli=1
Angenommen, wir haben eine sehr zeitaufwändige Datenbankabfrage oder eine API-Anforderung und können die Ergebnisse zwischenspeichern, um eine doppelte Ausführung zu vermeiden:
<?php
$key = 'api_data';
$data = apcu_entry($key, function () {
// Simulation zeitaufwändiger Betrieb,Zum Beispiel rufen Sie an https://gitbox.net/api/data
sleep(5); // Angenommen, die Operation braucht Zeit5Zweite
return file_get_contents('https://gitbox.net/api/data');
}, 60); // Cache60Zweite
echo $data . PHP_EOL;
?>
Während der ersten Ausführung wartet das Programm 5 Sekunden, um Remotedaten zu erhalten. Wenn das Skript erneut ausgeführt wird, wird das Ergebnis direkt aus dem Cache gelesen, was fast sofort reagiert.
Zeit des Überlebens (TTL) : apcu_entry () unterstützt das Einstellen von TTL. Wenn nicht festgelegt, läuft der Standard -Cache nicht ab und muss manuell gelöscht werden.
Gleichzeitiger Zugriff : Obwohl APCU in einer Webumgebung in CLI-Skripten thread-sicher ist, wird empfohlen, einen Sperrmechanismus (z. B. Dateisperrung) hinzuzufügen, um Rennbedingungen zu vermeiden.
Persistenzproblem : Der APCU -Cache liegt im Speicher. Der Cache verschwindet nicht unmittelbar nach der Ausführung der CLI. Solange der PHP -Prozess nicht neu gestartet wird, ist er weiterhin gültig. Es unterscheidet sich jedoch vom Webmodus und hängt von der Ausführungsumgebung ab.
Mit apcu_entry () können wir den Caching-Mechanismus in den Befehlszeilenskripten sehr bequem implementieren, wodurch der Leistungsverbrauch von sich wiederholenden Computer- oder Remote-Aufrufen erheblich verringert wird. Stellen Sie einfach sicher, dass der APCU -Support der CLI -Modus aktiviert ist und mit der ordnungsgemäßen TTL- und Datenschlüsselnamenverwaltung können Sie problemlos ein effizientes lokales Cache -System erstellen. Dies ist eine hoch würdige Optimierungsmethode für CLI -Tools oder Timing -Aufgaben, die häufiges Laufen erfordern.