Maison  >  Article  >  développement back-end  >  Introduction détaillée au système de mise en cache fourni avec PHP : extension APCu

Introduction détaillée au système de mise en cache fourni avec PHP : extension APCu

醉折花枝作酒筹
醉折花枝作酒筹avant
2021-06-09 17:06:083070parcourir

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.

Introduction détaillée au système de mise en cache fourni avec PHP : extension APCu

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.

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.

Description de la méthode

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

Démonstration d'utilisation

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().

Résumé

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!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer