Maison >développement back-end >Problème PHP >Introduction détaillée au système de mise en cache fourni avec PHP : extension APCu
Cet article vous donnera une introduction détaillée au système de mise en cache fourni avec PHP : l'extension APCu. Il a une certaine valeur de référence. Les amis dans le besoin peuvent s'y référer. J'espère qu'il sera utile à tout le monde.
Je pense que tout le monde a utilisé des systèmes de mise en cache tels que Memcached ou Redis pour la mise en cache quotidienne, ou pour résister au trafic, ou pour sauvegarder certaines données de hotspot couramment utilisées. projets, PHP nous a également préparé un système de mise en cache simple, entièrement capable de gérer le développement de nos sites quotidiens à l'échelle ordinaire. Cet ensemble d'extensions est l'extension APCu.
L'extension APCu est une mise à niveau de l'extension APC, qui n'est plus maintenue. Les deux ensembles d'extensions sont en fait basés sur la mise en cache des opcodes. C'est-à-dire la capacité de mise en cache implémentée par le propre opcode de PHP.
L'installation d'APCu est comme une extension PHP ordinaire. C'est très simple. Le plus important est que cette extension est très petite. Le téléchargement et l'installation peuvent être effectués en quelques secondes. Par conséquent, il peut être très facilement appliqué à des projets à petite échelle, et il est supporté nativement par PHP et ne nécessite pas de configuration supplémentaire telle que des ports.
Les fonctions telles que l'ajout, la suppression, l'interrogation et l'augmentation automatique dont disposent généralement les systèmes de cache sont toutes implémentées en conséquence dans l'extension APCu.
apcu_add — Créer un nouveau cache
apcu_cache_info — Afficher toutes les informations de cache d'APCu
apcu_cas — Mettre à jour une valeur de cache vers une nouvelle valeur
apcu_clear_cache — Effacer tous les caches
apcu_dec — Décrémenter la valeur du cache
apcu_delete — supprimer un contenu mis en cache
apcu_enabled — s'il faut activer le cache APCu dans l'environnement actuel
apcu_entry — Générer atomiquement une entité de cache
apcu_exists — Vérifier si le cache existe
apcu_fetch — Requête du cache
apcu_inc — valeur du cache à incrémentation automatique
apcu_sma_info — interroge les informations de mémoire partagée mises en cache
apcu_store — enregistre un cache
apcu_add("int", 1); apcu_add("string", "I'm String"); apcu_add("arr", [1,2,3]); class A{ private $apc = 1; function test(){ echo "s"; } } apcu_add("obj", new A); var_dump(apcu_fetch("int")); var_dump(apcu_fetch("string")); var_dump(apcu_fetch("arr")); var_dump(apcu_fetch("obj"));
L'utilisation normale est relativement simple Lorsque nous ajoutons différents types de données, elles peuvent être stockées normalement dans le cache. Cependant, il convient de noter que nous pouvons directement enregistrer l'objet dans le cache APCu sans le sérialiser ou JSON dans une chaîne. Le système le sérialisera automatiquement pour nous.
apcu_add(string $key, Mixed $var [, int $ttl = 0]) La méthode consiste à ajouter un cache normalement $ttl peut définir le délai d'expiration, également en secondes. sera efficace à long terme. Notez que la limite de temps de cache d'APCu est valide dans une CLI. Un nouvel appel à la CLI n'obtiendra pas le contenu du cache défini dans la dernière CLI. Dans PHP-FPM, le cache deviendra invalide après le redémarrage de PHP-FPM ou FastCGI.
Ensuite, nous nous concentrons sur le test de quelques méthodes moins courantes.
apcu_cas("int", 1, 2); var_dump(apcu_fetch("int")); // Warning apcu_cas() expects parameter 2 to be int apcu_cas("string", "I'm String", "I'm New String");
apcu_cas(string $key, int $old, int $new) consiste à modifier une valeur $old en une valeur $new. Il ne peut modifier le contenu que de type numérique. , une erreur sera signalée. Quels sont les avantages de cette fonction ? Son plus grand avantage est qu’il est atomique, c’est-à-dire qu’il n’est pas affecté par une concurrence élevée. La méthode apcu_store(string $key, Mixed $var [, int $ttl = 0]) lui est similaire, mais cette méthode modifie simplement le contenu d'un cache. Si la clé de cache n'existe pas, créez-en une nouvelle. n'est pas limité par type et n'est certainement pas atomique.
apcu_entry("entry", function($key){ return "This is " . $key; }); var_dump(apcu_fetch("entry"));
apcu_entry(string $key , callable $generator [, int $ttl = 0 ]) La fonction de cette fonction est que si le cache $key n'existe pas, la fonction anonyme $generator sera exécutée et $key Transmettez-le comme valeur de clé, puis générez et renvoyez un contenu comme valeur de ce cache.
var_dump(apcu_cache_info());
Enfin, si nous voulons afficher toutes les informations du cache APCu dans le système actuel, nous pouvons directement utiliser la fonction apcu_cache_info().
Lorsqu'il y a beaucoup de données dans le cache, il fournit également un itérateur APCUIterator pour nous permettre d'effectuer plus facilement des requêtes en boucle et des statistiques associées sur les informations du cache. En bref, ce système est un système de mise en cache à petite échelle très pratique, et vous pouvez essayer d'utiliser quelques petites fonctions dans le développement quotidien.
Code de test :
https://github.com/zhangyue0503/dev-blog/blob/master/php/202004/source/%E6%88%91%E4%BB%AC%E4%B9%9F%E6%9C%89%E8%87%AA%E5%B8%A6%E7%9A%84%E7%BC%93%E5%AD%98%E7%B3%BB%E7%BB%9F%EF%BC%9APHP%E7%9A%84APCu%E6%89%A9%E5%B1%95.php
Apprentissage recommandé : Tutoriel vidéo php
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!