Position actuelle: Accueil> Derniers articles> Comment mettre en cache les informations d'authentification des utilisateurs via APCU_ENTRY

Comment mettre en cache les informations d'authentification des utilisateurs via APCU_ENTRY

gitbox 2025-05-29

Dans le développement Web, le traitement des informations d'authentification des utilisateurs implique généralement des requêtes de base de données fréquentes ou d'autres calculs plus complexes, ce qui augmente sans aucun doute la charge du système. L'extension APCU de PHP fournit un mécanisme de mise en cache efficace qui peut être utilisé pour stocker les informations d'authentification des utilisateurs, réduisant ainsi le nombre de requêtes de base de données et améliorant les performances de l'application. Dans cet article, nous explorerons comment utiliser la fonction APCU_ENTRY pour mettre efficacement les informations d'authentification des utilisateurs.

Quelle est la fonction APCU_ENTRY ?

APCU_ENTRY est une fonction de cache fournie par l'extension APCU de PHP, qui est utilisée pour stocker des données dans le cache. Si les données existent déjà, elle renvoie la valeur dans le cache; Si les données n'existent pas, elle génère et stocke les données via une fonction de rappel. Contrairement à APCU_STORE Ordinaire ou à APCU_ADD , APCU_ENTRY exécute automatiquement un rappel donné pour générer du contenu mis en cache lorsque la clé n'existe pas, il est donc idéal pour la mise en cache de données ou de valeurs complexes qui nécessitent un calcul dynamique.

Utilisez APCU_ENTRY pour mettre en cache les informations d'authentification des utilisateurs

Lors du traitement de l'authentification de l'utilisateur, il est généralement nécessaire de vérifier l'identité de l'utilisateur et de récupérer des informations pertinentes, telles que les autorisations, les rôles, etc. Chaque fois que vous vous authentifiez, il peut y avoir des requêtes de base de données, ce qui affectera la vitesse et les performances de réponse de l'application. Afin d'éviter d'interroger la base de données à chaque fois, vous pouvez utiliser APCU_ENTRY pour mettre en cache les informations d'authentification de l'utilisateur.

Étape 1: Installez et activez l'extension APCU

Tout d'abord, vous devez vous assurer que l'extension APCU est installée et activée dans votre environnement PHP. S'il n'a pas été installé, vous pouvez utiliser la commande suivante:

 sudo apt-get install php-apcu
sudo service apache2 restart

Activez l'extension APCU dans le fichier php.ini :

 extension=apcu.so

Étape 2: Créez une fonction de rappel qui obtient des informations d'authentification des utilisateurs

Dans les applications pratiques, les informations d'authentification des utilisateurs sont généralement stockées dans une base de données. Nous avons d'abord besoin d'une fonction de rappel pour récupérer les informations d'authentification des utilisateurs de la base de données.

 function fetch_user_auth_info($user_id) {
    // Ici, on suppose que les informations d'authentification de l'utilisateur sont interrogées via la base de données.
    // Par exemple:Interroger le rôle et les autorisations de l'utilisateur
    $db = new PDO('mysql:host=localhost;dbname=your_database', 'username', 'password');
    $stmt = $db->prepare("SELECT role, permissions FROM users WHERE id = :user_id");
    $stmt->execute(['user_id' => $user_id]);
    return $stmt->fetch(PDO::FETCH_ASSOC);
}

Étape 3: Utilisez APCU_ENTRY pour mettre en cache les informations d'authentification des utilisateurs

Ensuite, nous pouvons utiliser la fonction APCU_ENTRY pour mettre en cache les informations d'authentification de l'utilisateur. Supposons que l'ID de l'utilisateur est utilisé comme clé de cache, les informations d'authentification sont stockées dans le cache.

 function get_user_auth_info($user_id) {
    // utiliser apcu_entry Informations sur l'authentification des utilisateurs de cache
    $cache_key = 'user_auth_' . $user_id;

    return apcu_entry($cache_key, function() use ($user_id) {
        // S'il n'y a pas de données dans le cache,Ensuite, appelez la fonction de rappel pour interroger la base de données et renvoyer les données
        return fetch_user_auth_info($user_id);
    });
}

Dans cet exemple, APCU_ENTRY vérifie si la valeur de la clé User_Auth _ {$ user_id} existe déjà dans le cache. S'il existe, il renverra directement les informations d'authentification en cache; S'il n'existe pas, il appellera la fonction fetch_user_auth_info pour obtenir les informations d'authentification de l'utilisateur à partir de la base de données et mettre en cache le résultat à APCU pour une utilisation ultérieure.

Étape 4: Utilisez les informations d'authentification des utilisateurs mis en cache

Maintenant, nous pouvons appeler la fonction get_user_auth_info directement pendant le processus d'authentification, qui gérera automatiquement la logique de cache.

 $user_id = 123; // Supposons l'utilisateur actuel ID Oui 123
$user_auth_info = get_user_auth_info($user_id);

// utiliser用户的认证信息
if ($user_auth_info['role'] == 'admin') {
    echo "Welcome, admin!";
} else {
    echo "Access denied.";
}

Pourquoi utiliser la fonction APCU_ENTRY ?

  1. Réduire les requêtes de base de données : en mettant en cache les informations d'authentification des utilisateurs, nous réduisons l'accès à la base de données chaque fois que nous le demandons, améliorant ainsi les performances.

  2. Génération automatique de cache : la fonction APCU_ENTRY exécutera automatiquement un rappel pour générer du contenu de cache, en évitant la complexité de la gestion manuelle des caches.

  3. Contrôle de validité du cache : APCU stockera en permanence les données dans le cache jusqu'à ce que le cache soit effacée. Cependant, vous pouvez également définir le temps d'expiration du cache au besoin ou utiliser d'autres politiques de cache.

Gestion du nettoyage et de l'expiration des caches

Bien que l'APCU fournit un mécanisme de mise en cache simple et efficace, la gestion de l'expiration du cache est toujours un problème important. Dans un environnement de production, vous devrez peut-être nettoyer régulièrement le cache ou définir le temps d'expiration du cache en fonction des besoins de l'entreprise. Vous pouvez utiliser APCU_DELETE pour supprimer le cache ou définir le temps de survie du cache en combinaison avec APCU_TTL .

 // Supprimer le cache
apcu_delete('user_auth_' . $user_id);

// Définir le temps d'expiration du cache(Par exemple 1 Heure)
apcu_store('user_auth_' . $user_id, $user_auth_info, 3600);

Résumer

L'utilisation de la fonction APCU_ENTRY pour mettre en cache les informations d'authentification des utilisateurs est un moyen très efficace et peut améliorer considérablement les performances du système. En générant automatiquement des caches et en réduisant les requêtes fréquentes à la base de données, il peut aider les développeurs à optimiser la vitesse de réponse de l'application et la consommation de ressources. Grâce à des stratégies de gestion des cache raisonnables, la stabilité et l'évolutivité du système peuvent être encore améliorées.