PHP4.0 fournit une collection de fonctions de mise en mémoire tampon de sortie. La prise en charge de la mise en mémoire tampon de sortie vous permet d'écrire des fonctions qui enveloppent des fonctions autour de tampons compressés. La prise en charge de la mise en mémoire tampon de sortie dans PHP4 permet de stocker les informations d'en-tête HTML, que le corps HTML soit ou non généré. Mais en PHP, les informations d'en-tête ((header(), type de contenu et cookies) ne sont pas mises en mémoire tampon.
Dans le processus d'utilisation de PHP, il est inévitable d'utiliser l'en-tête et
setcookie deux fonctions, ces deux fonctions enverront une information d'en-tête de fichier au navigateur, mais s'il y a une sortie (y compris une sortie vide, telle que des espaces, des retours chariot et des sauts de ligne) avant d'utiliser ces deux fonctions, une erreur sera invité, les informations d'invite sont les suivantes : "L'en-tête était prêt à être envoyé par" ! . Plusieurs fonctions de contrôle du tampon ont été ajoutées à PHP 4.0. L'utilisation de ces fonctions peut nous aider à résoudre de nombreux problèmes.
Nom de la fonction Format de la fonction Description de la fonction
Flush flush() affiche le contenu du tampon et supprime le tampon. Cette fonction est souvent utilisée et est très efficace.
ob_start void ob_start(void) Ouvre le tampon de sortie. Lorsque le tampon est actif, toutes les informations autres que celles d'en-tête de fichier du programme PHP ne sont pas envoyées, mais sont enregistrées dans le tampon interne. Afin d'afficher le contenu du tampon, vous pouvez utiliser ob_end_flush() ou utiliser ob_end_clean() pour afficher le contenu du tampon.
ob_get_contents string ob_get_contents(void) Renvoie le contenu du tampon interne. Cette fonction renvoie le contenu du buffer courant, ou FALSE si le buffer de sortie n'est pas actif.
ob_get_length int ob_get_length(void) Renvoie la longueur du tampon interne. Cette fonction renvoie la longueur du tampon actuel ; comme ob_get_contents, si le tampon de sortie n'est pas actif. Renvoie FAUX.
ob_end_flush void ob_end_flush(void) Envoie le contenu du tampon interne au navigateur et ferme le tampon de sortie. Cette fonction envoie le contenu du tampon de sortie (le cas échéant).
ob_end_clean void ob_end_clean(void) Supprime le contenu du tampon interne et ferme le tampon interne. Cette fonction n'affiche pas le contenu du tampon interne !
ob_implicit_flush void ob_implicit_flush ([int flag]) Active ou désactive le vidage absolu Quiconque a utilisé Perl connaît la signification de $|=x Cette chaîne peut ouvrir/fermer le tampon, et la fonction ob_implicit_flush est la même. La valeur par défaut est de fermer la zone tampon, d'activer la sortie absolue.
2. Exemple d'analyse :
1. Utilisez les fonctions de contrôle du tampon pour éviter les erreurs lors de l'envoi d'informations dans l'en-tête du fichier.
<? //Invite PHP
ob_start(); //Ouvre le tampon
echo "Bienvenue /n" ; //sortie
header("location:next.php"); //Rediriger le navigateur vers next.php
?>
Si ob_start est supprimé, PHP affichera une erreur sur la ligne 4 du fichier et le message d'erreur est "L'en-tête était prêt à être envoyé par". Cependant, si ob_start est ajouté, aucune erreur ne sera affichée. tampon est ouvert, l'erreur après l'écho Les caractères ne seront pas affichés dans le navigateur, mais resteront dans le tampon du serveur. Ils ne seront pas affichés tant que vous n'utiliserez pas flush ou ob_end_flush, il n'y aura donc aucune erreur dans l'en-tête du fichier. été sorti !
2. Enregistrez la sortie (c'est une utilisation très classique).
Supposons que vous souhaitiez connaître les informations de sortie de l'écran du client, telles que les résultats de sortie des fonctions, etc., et ces informations de sortie différeront en fonction du client. Nous pouvons utiliser la fonction <?phpinfo(); ?> pour obtenir les informations de configuration du serveur, mais que se passe-t-il si nous voulons enregistrer la sortie de la fonction phpinfo() ? Avant qu'il n'y ait pas de contrôle du tampon, on peut dire qu'il n'y avait aucun moyen, mais avec le contrôle du tampon, nous pouvons facilement le résoudre.
<?
ob_start(); //Ouvre le tampon
phpinfo(); //Utiliser la fonction phpinfo
$info=ob_get_contents(); //Récupère le contenu du tampon et assigne-le à $info
$file=fopen('phpinfo.txt','w'); //Ouvre le fichier phpinfo.txt
fwrite($file,$info); //Écrire les informations dans phpinfo.txt
fclose($file); //Ferme le fichier phpinfo.txt
?>
En utilisant la méthode ci-dessus, vous pouvez enregistrer les informations phpinfo de différents utilisateurs. Cela n'était peut-être pas possible auparavant ! De même, la méthode tampon peut être utilisée pour enregistrer des tâches difficiles à réaliser avec des méthodes ordinaires. Il s'agit en fait d'une méthode de conversion de certains « processus » en « fonctions ».