PHP Conference Nagoya 2025

Laver les tampons système

PHP apporte deux façons de vider (envoyer et supprimer le contenu) les tampons système : à travers l'appel de flush() et en activant le vidage de tampon implicite avec ob_implicit_flush() ou le paramètre implicit_flush de php.ini.

Comportement de vidage de tampon de sortie

Avec le vidage de tampon implicite désactivé, PHP ne lave la sortie que lorsque flush() est appelée ou lorsque le script se termine.

Avec le vidage de tampon implicite activé, PHP tentera de laver après chaque bloc de code produisant de la sortie. La sortie dans ce contexte est des données de longueur non nulle qui sont :

Note: Afficher des chaînes vides ou envoyer des en-têtes n'est pas considéré comme une sortie et ne déclenchera pas d'opération de vidage de tampon.

Avertissement

Si le vidage de tampon implicite est activé, les caractères de contrôle (par exemple "\n", "\r", "\0") déclencheront également un vidage de tampon.

Limitations

Cette fonctionnalité ne peut pas laver les tampons de sortie de niveau utilisateur. Pour les utiliser ensemble, les tampons de sortie de niveau utilisateur doivent être lavés avant de laver les tampons système pour que PHP produise une sortie.

Avertissement

Appeler flush() ou activer le vidage de tampon implicite peut interférer avec les gestionnaires de sortie des tampons de sortie de niveau utilisateur qui définissent et envoient des en-têtes dans un contexte web (par exemple ob_gzhandler()) en envoyant des en-têtes avant que ces gestionnaires ne le fassent.

La mise en tampon mise en œuvre par le logiciel/matériel sous-jacent ne peut pas être remplacée par PHP et doit être prise en compte lors de l'utilisation des fonctions de contrôle des tampons de PHP. Vérifier les paramètres de mise en tampon des serveurs web/navigateurs/consoles et travailler avec ceux-ci peut atténuer les problèmes potentiels. Travailler dans un contexte web, soit les paramètres de mise en tampon du serveur web ou la mise en tampon du script pourrait être ajustée pour fonctionner en tandem alors que travailler autour des stratégies de mise en tampon de divers navigateurs peut être réalisé en ajustant la mise en tampon dans le script PHP. Sur les consoles qui implémentent la mise en tampon de ligne, les caractères de nouvelle ligne pourraient être insérés aux endroits appropriés avant de vider la sortie.

SAPI Differences In Flushing

Même si le vidage de tampon est implémenté par chaque SAPI de manière légèrement différente, ces implémentations tombent dans l'une des deux catégories :

  • Les SAPIs utilisés dans un contexte web videront d'abord les en-têtes suivis de la sortie. Apache2Handler, CGI, FastCGI et FPM sont de tels SAPIs
  • d'autre SAPIs tels que CLI et embed videront la sortie uniquement

add a note

User Contributed Notes

There are no user contributed notes for this page.
To Top