Position actuelle: Accueil> Derniers articles> Afficher et gérer plusieurs gestionnaires de cache à l'aide de ob_list_handlers

Afficher et gérer plusieurs gestionnaires de cache à l'aide de ob_list_handlers

gitbox 2025-05-28

Dans PHP, la fonction OB_LIST_HANDLEURS vous permet d'afficher le gestionnaire de tampon de sortie actuellement activé. La tampon de sortie est une fonctionnalité de PHP qui vous permet de stocker temporairement la sortie du script en mémoire plutôt que de l'envoyer immédiatement au navigateur. De cette façon, vous pouvez traiter ou modifier la sortie et fonctionner dessus avant d'être enfin envoyé au navigateur.

Cet article expliquera comment utiliser la fonction ob_list_handlers pour afficher et gérer plusieurs gestionnaires de cache dans PHP.

1. Présentation de la fonction ob_list_handlers

La fonction OB_LIST_HANDLERS est utilisée pour répertorier le gestionnaire de tampon de sortie actuellement actif. Les gestionnaires de tampons de sortie sont définis lorsque OB_START () est appelé et qu'ils sont exécutés lorsque le tampon est fermé.

Syntaxe de fonction:

 ob_list_handlers(): array

Cette fonction renvoie un tableau contenant tous les noms de gestionnaire de tampon de sortie enregistrés.

2. Comment utiliser ob_list_handlers pour afficher les gestionnaires de tampons

Tout d'abord, examinons un exemple simple montrant comment utiliser ob_list_handlers pour afficher tous les gestionnaires de tampon de sortie actuellement activés.

 <?php
// Démarrer la tampon de sortie
ob_start(function($buffer) {
    // À la fin du tampon de sortie,Modifier le contenu de sortie
    return strtoupper($buffer);
});

// Sortir du contenu
echo "Hello, World!";

// utiliser ob_list_handlers Afficher tous les gestionnaires de tampons de sortie
$handlers = ob_list_handlers();

// Liste des gestionnaires de sortie
print_r($handlers);
?>

Sortir:

 Array
(
    [0] => default output handler
    [1] => user-defined callback handler
)

Dans cet exemple, nous commençons d'abord un tampon à l'aide d'OB_START et spécifions une fonction de rappel qui convertit toutes les sorties en majuscules. Ensuite, nous appelons ob_list_handlers pour afficher tous les gestionnaires de tampons actuellement enregistrés. La sortie finale affiche le gestionnaire par défaut et notre fonction de rappel personnalisée.

3. Comment gérer plusieurs gestionnaires de tampons

3.1 Fermez un programme de mise en mémoire tampon de sortie

Si vous n'avez plus besoin d'un gestionnaire de tampon de sortie, vous pouvez utiliser ob_end_flush ou ob_end_clean pour fermer le tampon actuel.

  • ob_end_flush () sortira le contenu dans le tampon au navigateur et fermera le tampon.

  • ob_end_clean () rejette le contenu dans le tampon et ferme le tampon.

Par exemple, supposons que plusieurs tampons ont démarré et que nous voulons fermer le premier tampon:

 <?php
// Démarrez le premier tampon
ob_start(function($buffer) {
    return strtoupper($buffer);
});

// Démarrez le deuxième tampon
ob_start(function($buffer) {
    return strrev($buffer);
});

// Sortir du contenu
echo "Hello, World!";

// utiliser ob_list_handlers Afficher tous les gestionnaires de tampons de sortie
$handlers = ob_list_handlers();
print_r($handlers);

// Fermer le premier tampon et sortir le résultat
ob_end_flush();  // Ce sera sorti "HELLO, WORLD!"

// utiliser ob_list_handlers Vérifiez à nouveau le gestionnaire de tampons
$handlers = ob_list_handlers();
print_r($handlers);
?>

Sortir:

 Array
(
    [0] => user-defined callback handler
    [1] => user-defined callback handler
)

HELLO, WORLD!
Array
(
    [0] => user-defined callback handler
)

Dans cet exemple, nous commençons d'abord deux tampons. En appelant ob_end_flush (), le premier tampon est fermé et le contenu est sorti, et le résultat montre que le deuxième tampon est toujours actif.

3.2 Supprimer tous les tampons

Si vous souhaitez supprimer tous les tampons et effacer le contenu du tampon, vous pouvez utiliser ob_clean () et ob_end_clean () pour nettoyer tous les tampons sans sortie.

 <?php
// Démarrer le tampon
ob_start();
echo "Hello, World!";

// Supprimer tous les tampons
while (ob_get_level()) {
    ob_end_clean();
}

// Sortir la liste de tampons actuelle
$handlers = ob_list_handlers();
print_r($handlers);  // Les tableaux vides doivent être affichés
?>

Dans cet exemple, tous les tampons sont nettoyés, donc OB_LIST_HANDLERS renverra un tableau vide.

4. Utiliser URL et tamponner

Si votre application PHP implique des API externes ou un chargement de ressources (comme obtenir des données via des URL), vous pouvez également utiliser la tampon de sortie pour capturer et traiter ce contenu. Par exemple, supposons que vous deviez obtenir des données à partir d'une URL via File_get_Contents et l'afficher dans votre navigateur:

 <?php
// Démarrer la tampon de sortie区
ob_start();

// À partir du spécifiéURLObtenir du contenu
$content = file_get_contents('https://gitbox.net/api/data');

// Contenu de sortie
echo $content;

// Afficher le gestionnaire de tampon de sortie actuel
$handlers = ob_list_handlers();
print_r($handlers);

// Nettoyez le tampon et sortez le résultat
ob_end_flush();
?>

Sortir:

 Array
(
    [0] => default output handler
)

Dans cet exemple, nous obtenons le contenu sur gitbox.net via File_get_Contents , capturez le contenu à l'aide du tampon de sortie et affichez le gestionnaire de tampon actuel via OB_LIST_HANDLERS .

5. Résumé

OB_LIST_HANDLERS est un outil très utile qui aide les développeurs à afficher et à gérer plusieurs programmes de mise en mémoire tampon de sortie. Il offre plus de flexibilité pour le développement de PHP, en particulier lors du traitement du contenu de sortie. En pratique, vous pouvez optimiser le flux de sortie en combinant les fonctions de tampon de sortie, contrôler l'ordre dans lequel le contenu est affiché ou modifier son format avant de passer le contenu au client.

En utilisant correctement ces fonctionnalités tampon, les développeurs PHP peuvent gérer la sortie dans de grandes applications plus efficacement, en évitant les goulots d'étranglement de performances, en particulier lors du traitement des ressources externes telles que les données de l'API, ce qui peut améliorer la vitesse de réponse du programme et l'expérience utilisateur.