Maison >développement back-end >tutoriel php >La mise en mémoire tampon de sortie provoque-t-elle le gel du flux de ma webcam ?

La mise en mémoire tampon de sortie provoque-t-elle le gel du flux de ma webcam ?

Linda Hamilton
Linda Hamiltonoriginal
2024-11-01 14:03:30935parcourir

Is Output Buffering Causing My Web Camera Feed to Freeze?

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