discuzEs können verschiedene Caches verwendet werden, hier sprechen wir nur vom Datencache. discuz unterstützt Caching-Methoden wie redis und memcache. Sie müssen es nur in /config/config_global.php festlegen und es kann verwendet werden, wenn die Umgebung es unterstützt.
Tatsächlich ist das Lesen und Schreiben des Caches relativ einfach. Der Code lautet wie folgt:
require_once libfile('function/cache'); //加载缓存类 savecache($cachename, $data); //写缓存 loadcache($cachename); //读缓存,将缓存写到$_G变量中,通过读取$_G['cache']来获取缓存数据。
wobei savecache( ) schreibt die Daten in den Cache (z. B. memcacheredisxpc usw.) und der Cache wird in der Tabelle common_syscache aufgezeichnet.
Bei Verwendung von loadcache() wird die Methode fetch_all in der Klasse table_common_syscache aufgerufen, um den Cache abzurufen
1. Stellen Sie zunächst fest, ob der Speichercache festgelegt ist. Wenn ja, lesen Sie: Wenn die Daten im Speichercache vorhanden sind, werden sie direkt zurückgegeben. Wenn sie nicht vorhanden sind und der Speichercache nicht festgelegt ist, wird Schritt 2 aufgerufen.
Stellen Sie dann fest, ob der Datei-Cache festgelegt ist. Wenn die Daten vorhanden sind, werden sie direkt zurückgegeben Wenn der Dateicache nicht festgelegt ist, fahren Sie mit Schritt 3 fort. 3. Lesen Sie die Daten aus der Tabelle
common_syscacheund geben Sie sie zurück. (Daher sollten diese Aspekte beim Löschen des Caches berücksichtigt werden)
Der Schlüssel besteht darin, den Cache zu leeren, was in der globalen->Leistung erfolgen kann Optimierung->Speicheroptimierung Einige Einstellungen sind optimiert und der angegebene Cache kann auch direkt in der Speicher-Cache-Verwaltung gelöscht werden. Für einen benutzerdefinierten Cache müssen Sie jedoch eine eigene Funktion zum Löschen entwickeln. In meiner Umgebung ist der Memcache-Cache aktiviert und dann wird die integrierte Funktion „memory()“ des Systems verwendet, um den Cache zu leeren. Wenn ich jedoch „loadcache()“ zum Lesen von Daten verwende, stelle ich fest, dass der Cache noch vorhanden ist. Der Grund dafür ist, dass „memory()“ die Memcache-Daten löschen kann, die Tabelle „commom_syscache“ jedoch nicht gelöscht wird und daher weiterhin vorhanden ist, wenn „loadcache()“ verwendet wird. Später habe ich die Funktion deletegroupcache() überprüft und gefunden. Um mich an die Gesamtsituation anzupassen, habe ich einfach die Funktion deletecache() in /source/function/function_core.php geschrieben. Der Code lautet wie folgt:
function deletecache($cachenames) { if(!empty($cachenames)) { C::t('common_syscache')->delete($cachenames); } }
Das obige ist der detaillierte Inhalt vonSchritte zur Verwendung von Memcache-Caching in Discuz. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!