discuzUne variété de caches peuvent être utilisés, nous ne parlons ici que du cache de données. discuz prend en charge les méthodes de mise en cache telles que redis et memcache. Il vous suffit de le définir dans /config/config_global.php et il peut être utilisé si l'environnement le prend en charge.
En fait, la lecture et l'écriture du cache sont relativement simples. Le code est le suivant :
require_once libfile('function/cache'); //加载缓存类 savecache($cachename, $data); //写缓存 loadcache($cachename); //读缓存,将缓存写到$_G变量中,通过读取$_G['cache']来获取缓存数据。
où savecache( ) écrit les données dans Set the cache (telles que memcacheredisxpc, etc.), et le cache sera enregistré dans la table common_syscache.
Lors de l'utilisation de loadcache(), la méthode fetch_all dans la classe table_common_syscache sera appelée pour obtenir le cache
1. Déterminez d'abord si le cache mémoire est défini. Si c'est le cas, lisez Pour les données mises en cache en mémoire, si les données existent, elles seront renvoyées directement. Si elles n'existent pas et que le cache mémoire n'est pas défini, cela passera à l'étape 2.
2. Déterminez ensuite si le cache du fichier est défini. Si c'est le cas, lisez les données du fichier si les données existent, elles seront renvoyées directement. le cache de fichiers n'est pas défini, passez à l'étape 3.
3. Lisez les données de la table common_syscache et renvoyez-les. (Ces aspects doivent donc être pris en considération lors de la suppression du cache)
La clé est de vider le cache, ce qui peut être fait dans le global->Performance Optimisation->Optimisation de la mémoire Certains paramètres sont optimisés, et le cache spécifié peut également être vidé directement dans la gestion du cache mémoire. Mais pour un cache personnalisé, vous devez développer votre propre fonction pour le vider. Dans mon environnement, le cache memcache est activé, puis la fonction memory() intégrée au système est utilisée pour vider le cache. Cependant, lorsque j'utilise loadcache() pour lire des données, je constate que le cache existe toujours. La raison en est que memory() peut effacer les données memcache, mais elle n'efface pas la table commom_syscache, elle existe donc toujours lorsque loadcache() est utilisée. Plus tard, j'ai vérifié et trouvé la fonction deletegroupcache(). Afin de m'adapter à la situation globale, j'ai simplement écrit la fonction deletecache() dans /source/function/function_core.php. Le code est le suivant :
function deletecache($cachenames) { if(!empty($cachenames)) { C::t('common_syscache')->delete($cachenames); } }
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!