Position actuelle: Accueil> Derniers articles> Comment utiliser APCU_ENTRY pour la mise en cache dans un environnement CLI

Comment utiliser APCU_ENTRY pour la mise en cache dans un environnement CLI

gitbox 2025-05-18

Dans le développement de PHP, l'APCU est une extension de cache de données utilisateur très efficace qui peut améliorer considérablement les performances du script, en particulier dans les scénarios où les calculs répétés sont fréquemment appelés. Bien que l'APCU soit principalement utilisée dans les environnements Web, il peut également être utilisé pour la mise en cache en mode ligne de commande (CLI), et seules une configuration et des précautions sont nécessaires. Cet article présentera comment utiliser la fonction APCU_ENTRY () pour réaliser une mise en cache efficace dans l'environnement CLI et donner un exemple d'utilisation.

Qu'est-ce que APCU_ENTRY () ?

APCU_ENTRY () est une fonction de commodité fournie dans l'extension APCU pour simplifier les opérations de cache. Il accepte un nom de clé et une fonction de rappel comme des arguments. S'il y a une clé correspondante dans le cache, il renverra directement la valeur mise en cache; Sinon, une fonction de rappel sera exécutée pour obtenir la valeur et mettre en cache le résultat.

La syntaxe est la suivante:

 mixed apcu_entry(string $key, callable $callback, int $ttl = 0)
  • $ key : Cache Key Name.

  • $ rappel : une fonction de rappel qui génère du contenu mis en cache.

  • $ TTL : Temps de survie en cache (unité: secondes), facultatif.

Allumez la prise en charge de l'APCU en mode CLI

Par défaut, APCU est désactivé en mode CLI. Pour utiliser APCU_ENTRY () sur la ligne de commande, vous devez modifier le fichier de configuration ou l'activer explicitement sur la ligne de commande:

 php -d apc.enable_cli=1 your_script.php

Ou modifier php.ini :

 apc.enable_cli=1

Exemple: Résultats du cache des opérations longues

Supposons que nous ayons une requête de base de données très longue ou une demande d'API, et nous pouvons mettre en cache les résultats pour éviter l'exécution en double:

 <?php
$key = 'api_data';

$data = apcu_entry($key, function () {
    // Opération de temps de simulation,Par exemple, appelez https://gitbox.net/api/data
    sleep(5); // En supposant que l&#39;opération prend du temps5Deuxième
    return file_get_contents('https://gitbox.net/api/data');
}, 60); // cache60Deuxième

echo $data . PHP_EOL;
?>

Au cours de la première exécution, le programme attendra 5 secondes pour obtenir des données distantes; Lors de l'exécution du script, tant qu'il ne dépasse pas 60 secondes, le résultat sera lu directement à partir du cache, qui répondra presque instantanément.

Choses à noter

  1. Temps de survie (TTL) : APCU_ENTRY () prend en charge le réglage TTL. S'il n'est pas défini, le cache par défaut n'expire pas et doit être effacé manuellement.

  2. Accès simultané : Bien que l'APCU soit en filetage dans un environnement Web, dans les scripts CLI, s'il y a un accès simultané, il est recommandé d'ajouter un mécanisme de verrouillage (tel que le verrouillage du fichier) pour éviter les conditions de course.

  3. Problème de persistance : le cache APCU réside en mémoire. Le cache ne disparaîtra pas immédiatement après l'exécution de la CLI. Tant que le processus PHP ne redémarre pas, il sera toujours valide. Cependant, il est différent du mode Web et dépend de l'environnement d'exécution.

Résumer

Avec APCU_ENTRY (), nous pouvons implémenter le mécanisme de mise en cache très commodément dans les scripts en ligne de commande, réduisant ainsi considérablement la consommation de performances de calcul répétitif ou d'appels distants. Assurez-vous simplement que la prise en charge de CLI Mode APCU est activée et avec la gestion appropriée du nom de la clé TTL et des données, vous pouvez facilement créer un système de cache local efficace. Il s'agit d'une méthode d'optimisation très digne pour les outils CLI ou les tâches de synchronisation qui nécessitent une course fréquente.