Comment désactiver la mise en mémoire tampon de sortie en PHP
Le problème
Lors de la diffusion de données à partir d'une webcam à l'aide de la fonction d'impression de PHP, une certaine mise en mémoire tampon semble se produire . À des fréquences d'images faibles, le flux se fige puis affiche rapidement plusieurs images. On soupçonne que ce problème résulte du tampon de sortie.
La solution
Étape 1 : Désactiver le tampon de sortie
-
Globalement , en désactivant output_buffering dans php.ini ou Apache config :
php_flag "output_buffering" Off
- Pour le script spécifique, appelez ob_end_flush() ou ob_end_clean().
Étape 2 : Désactivez la mise en mémoire tampon de sortie au niveau du serveur
- Appelez ob_implicit_flush() au début du script.
- Appelez flush() après chaque instruction produisant une sortie.
Explication
PHP utilise deux couches de mise en mémoire tampon : le tampon de sortie et le tampon d'écriture/tampon de serveur.
Tampon de sortie
- Contrôlé par ob_start(), ob_end_flush() et ob_end_clean().
- Tampons de sortie vers le corps de la réponse.
- La limite par défaut est de 4 096 octets.
- Désactivez globalement en définissant output_buffering sur Off ou localement en appelant ob_end_clean()/ob_end_flush().
Write Buffer et Server Buffer
- Contrôlé par flush().
- Tampons de sortie de PHP et du backend (serveur Web ou CGI).
- Peut être influencé par le schéma de mise en mémoire tampon du serveur Web.
- Activer vidage implicite en appelant ob_implicit_flush() ou en définissant implicit_flush sur On dans php.ini (non recommandé en raison d'implications potentielles sur les performances).
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!
Déclaration:Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn