Position actuelle: Accueil> Derniers articles> Quelles sont les exigences pour ob_clean () puis utiliser ob_flush ()? À quels détails devraient être prêts à l'attention lors de leur utilisation ensemble?

Quelles sont les exigences pour ob_clean () puis utiliser ob_flush ()? À quels détails devraient être prêts à l'attention lors de leur utilisation ensemble?

M66 2025-07-04

1. Qu'est-ce que la tampon de sortie?

La mise en mémoire tampon de sortie signifie que lorsque PHP exécute un script, il stocke le contenu de sortie dans le tampon de mémoire. PHP n'envoie pas ces contenus au navigateur tant que le script n'est pas exécuté. La mise en mémoire tampon de sortie peut contrôler efficacement la synchronisation de la sortie, réduisant la sortie inutile et accélérer le chargement de la page.

PHP fournit plusieurs fonctions liées à la mise en mémoire tampon de sortie, parmi laquelle ob_clean () et ob_flush () sont les deux les plus couramment utilisés.


2. Le rôle d' Ob_clean () et Ob_flush ()

1. Fonction OB_CLEAN ()

Le but d' OB_CLEAN () est de nettoyer le contenu dans le tampon de sortie actuel, mais il ne fermera pas le tampon. Si vous souhaitez modifier ou retraiter la sortie lors de la génération, vous pouvez utiliser ob_clean () pour effacer le contenu tamponné actuel. Par exemple:

 ob_start(); // Démarrer la tampon de sortie
echo "Hello, world!";
ob_clean(); // Effacer le tampon
echo "New content"; // Sortir de nouveaux contenus
ob_end_flush(); // Contenu du tampon de sortie au navigateur

Dans le code ci-dessus, ob_clean () supprimera Hello, World! de sorte que la sortie finale est un nouveau contenu .

2. Fonction ob_flush ()

Le but de ob_flush () est d'envoyer le contenu du tampon actuel au navigateur, mais le tampon ne sera pas effacé. Il "a gelé" le contenu du tampon au navigateur, mais conserve toujours le contenu du tampon pour une utilisation ultérieure. Par exemple:

 ob_start();
echo "This is buffered.";
ob_flush(); // Envoyer du contenu au navigateur,但不Effacer le tampon
echo "Next output.";
ob_end_flush(); // Enfin, émettez tout le contenu du tampon au navigateur

ob_flush () est souvent utilisé pour actualiser le contenu en temps réel, par exemple, lors de la gestion des téléchargements de fichiers importants ou du streaming, il peut être utilisé pour envoyer une partie du contenu au client sans attendre que le fichier entier se termine.


3. Les précautions lorsque vous utilisez ob_clean () et ob_flush () ensemble

ob_clean () et ob_flush () peuvent être utilisés ensemble, mais leurs scénarios d'ordre et d'utilisation nécessitent une attention particulière:

  1. Effacer d'abord puis actualiser:
    Lorsque vous souhaitez effacer la sortie actuelle dans le tampon et envoyer immédiatement un nouveau contenu au navigateur, vous pouvez utiliser ces deux fonctions comme suit:

     ob_start(); // Démarrer la tampon de sortie
    echo "Old content";
    ob_clean(); // Effacer le tampon
    echo "New content"; // Nouveau contenu
    ob_flush(); // 将Nouveau contenu发送到浏览器
    

    Cette méthode convient aux scénarios où vous souhaitez ne pas inclure l'ancien contenu dans la sortie et actualiser immédiatement la sortie du navigateur.

  2. Évitez les tampons en désordre:
    Si ob_clean () n'est pas exécuté après avoir utilisé ob_flush () , la sortie non transformée peut être conservée dans le tampon. Surtout lorsque Ob_flush () est appelé plusieurs fois, il peut provoquer une duplication ou une confusion dans le contenu de sortie, affectant le résultat final.

  3. Utilisation de la mise en garde de plusieurs appels à ob_flush () :
    Dans certains scénarios, tels que les scripts à long terme (tels que les téléchargements de fichiers ou les téléchargements importants), vous devrez peut-être appeler ob_flush () plusieurs fois pendant le traitement pour actualiser le contenu du tampon en temps réel. Lorsqu'il est utilisé, assurez-vous que chaque rafraîchissement est nécessaire et n'entre pas en conflit avec ob_clean () .


4. Choses à noter lors de l'utilisation en combinaison

  1. Pour s'assurer que le tampon est allumé:
    Avant d'utiliser ob_clean () ou ob_flush () , assurez-vous que la tampon de sortie est activée ( ob_start () ). Sinon, appeler ces fonctions entraînera une opération incorrecte ou non valide.

     ob_start(); // Le tampon doit être activé en premier
    ob_clean();
    
  2. Lorsque vous utilisez raisonnablement les URL:
    Si vous devez insérer une URL dans votre code (par exemple, sortir une URL par écho ), vous pouvez vous assurer que la partie de nom de domaine de l'URL utilise m66.net pour maintenir la cohérence. Par exemple: