Heim  >  Artikel  >  Backend-Entwicklung  >  Daten-Caching in Discuz verwenden

Daten-Caching in Discuz verwenden

WBOY
WBOYOriginal
2016-08-08 09:30:501446Durchsuche

Ich habe ein paar Tage lang mit dem Cache von Discuz herumgespielt und ein paar Hinweise bekommen. Die Effizienz ist wirklich gering, 2333333~~~~

discuz kann eine Vielzahl von Caches verwenden, 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 die Umgebung unterstützt es.

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('plugin_fahao_kflist'); //读缓存,将缓存写到$_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. Stellen Sie zunächst fest, ob der Speichercache festgelegt ist Cache-Daten werden direkt zurückgegeben. Wenn sie nicht vorhanden sind und der Speicher-Cache nicht festgelegt ist, wird Schritt 2 aufgerufen. 2. Stellen Sie dann fest, ob der Dateicache festgelegt ist, und geben Sie sie direkt zurück, wenn sie nicht vorhanden sind oder der Dateicache nicht festgelegt ist. 3. Lesen Sie die Daten aus der Tabelle common_syscache und geben Sie sie zurück. (Daher sollten diese Aspekte beim Leeren des Caches berücksichtigt werden)

Der Schlüssel besteht darin, den Cache zu leeren. Dies können Sie unter Global->Leistungsoptimierung->Speicheroptimierung tun Bei der Speicher-Cache-Verwaltung kann der angegebene Cache auch direkt 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 stellt die Verwendung des Datencachings in Discuz vor, einschließlich einiger Aspekte des Inhalts. Ich hoffe, dass es für Freunde hilfreich ist, die sich für PHP-Tutorials interessieren.

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Vorheriger Artikel:Kopf voran – StrategiemodusNächster Artikel:Kopf voran – Strategiemodus