Position actuelle: Accueil> Derniers articles> Comment vérifier l'état du cache du script PHP actuel avec ob_list_handlers

Comment vérifier l'état du cache du script PHP actuel avec ob_list_handlers

gitbox 2025-05-29

Dans le développement quotidien de PHP, nous rencontrons souvent des problèmes de mise en mémoire tampon de sortie, tels que le code brouillé sur la page, les exceptions de sortie ou l'en-tête ont été envoyés. Pour le moment, il est très important de visualiser rapidement l'état du cache de sortie dans le script actuel.
La fonction ob_list_handlers () est un gadget très pratique qui peut nous aider à comprendre en un coup d'œil quels tampons de sortie fonctionnent.

Qu'est-ce que l'OB_LIST_HANDLERS ()

ob_list_handlers () est une fonction intégrée dans PHP. Il renvoie un tableau répertoriant les noms de processeur (noms de gestionnaire) de tous les tampons de sortie actuellement actifs.
Ces processeurs peuvent être démarrés manuellement par ob_start () , ou ils peuvent être automatiquement enregistrés par PHP lui-même ou certaines extensions (comme la compression GZIP).

Référence officielle du document: https://www.gitbox.net/manual/zh/fonction.ob-list-handlers.php

Utilisation de base

En fait, il est très simple à utiliser, l'exemple de code est le suivant:

 <?php
// Démarrer un simple tampon de sortie
ob_start();

// Démarrer un autre tampon de sortie avec une fonction de rappel
ob_start(function ($buffer) {
    return strtoupper($buffer);
});

// utiliser ob_list_handlers Vérifiez l&#39;état du tampon actuel
print_r(ob_list_handlers());

// Nettoyez et désactivez tous les tampons de sortie
while (ob_get_level() > 0) {
    ob_end_flush();
}
?>

Le résultat de sortie est similaire:

 Array
(
    [0] => Closure
    [1] => default output handler
)

Comme vous pouvez le voir, la fermeture signifie qu'une fonction anonyme gère le contenu du tampon et que le gestionnaire de sortie par défaut est le processeur de sortie par défaut de PHP.

Exemples de scénarios d'application pratiques

Lors du débogage de grands projets, en particulier les sites Web impliquant des moteurs de modèles complexes, des bibliothèques tierces ou une compression GZIP activées, telles que:

  • Système de gestion de contenu (CMS)

  • Plate-forme de commerce électronique

  • L'interface de l'API renvoie le prétraitement des données

Vous pouvez insérer le code suivant dans la position clé du script et le visualiser en temps réel:

 <?php
if (!function_exists('debug_ob_handlers')) {
    function debug_ob_handlers() {
        echo '<pre>';
        print_r(ob_list_handlers());
        echo '</pre>';
    }
}

// Déboguer quelque part
debug_ob_handlers();
?>

Cela peut rapidement découvrir s'il y a une mise en mémoire tampon inattendue, comme être affecté par le mécanisme de cache des moteurs GZIP ou matriciels.

Choses à noter

  • ob_list_handlers () répertorie uniquement les processeurs actifs et ne vous dira pas le contenu spécifique dans chaque tampon.

  • Si aucune tampon de sortie n'est activée dans le script, un tableau vide est renvoyé.

  • Lorsque certaines extensions (telles que ZLIB ) sont activées, des processeurs de sortie supplémentaires peuvent être automatiquement ajoutés, comme OB_GZHandler , et vous devez faire attention aux conflits.

Résumer

ob_list_handlers () est une fonction légère mais très pratique qui peut considérablement améliorer la vitesse de positionnement lors du débogage des problèmes liés à la mise en mémoire tampon.
Il est recommandé que chaque développeur PHP le maîtrise et l'utilise de manière flexible en cas de besoin, en particulier lorsqu'il s'agit de flux de sortie complexes ou de débogage de problèmes difficiles à positionner.