Maison  >  Article  >  développement back-end  >  Comment puis-je désactiver la mise en mémoire tampon de sortie dans PHP pour diffuser des données depuis ma caméra Web ?

Comment puis-je désactiver la mise en mémoire tampon de sortie dans PHP pour diffuser des données depuis ma caméra Web ?

Linda Hamilton
Linda Hamiltonoriginal
2024-10-31 12:00:31704parcourir

How Can I Disable Output Buffering in PHP to Stream Data from My Web Camera?

Désactivation de la mise en mémoire tampon de sortie dans PHP

Dans votre quête pour vous connecter à une caméra Web et relayer des données via un script de relais, vous' J'ai rencontré un problème de mise en mémoire tampon indésirable. Pour résoudre cet obstacle, examinons les spécificités des mécanismes de mise en mémoire tampon de PHP et leur impact potentiel sur votre script.

Output Buffering

La première couche de mise en mémoire tampon Nous rencontrerons le « tampon de sortie », qui gère exclusivement la sortie destinée au corps de la réponse, sans affecter les en-têtes. Par défaut, PHP met en mémoire tampon jusqu'à 4 096 octets dans ce tampon, le vidant lorsque ce seuil est dépassé ou lorsque des instructions d'écho et des actions génératrices de sortie similaires se produisent.

Pour remplacer ce comportement par défaut, vous pouvez choisir de désactiver la sortie. mise en mémoire tampon en définissant la directive output_buffering sur Off dans votre fichier php.ini. Vous pouvez également le désactiver pour des scripts individuels en appelant ob_end_clean() ou ob_end_flush() dès le début.

Write Buffer and Web Server Buffer

Au-delà de la sortie buffer se trouve une couche tampon supplémentaire connue sous le nom de « tampon d'écriture », qui fonctionne en conjonction avec n'importe quel tampon utilisé par votre serveur Web. Lorsque vous utilisez Apache avec mod_php (sans mod_gzip), l'appel de flush() vient à votre aide, envoyant la sortie vers le navigateur. D'autres backends peuvent également prendre en charge cela, bien que le manuel PHP n'offre aucune garantie.

Server-Level Implicit Flushing

Enfin, vous disposez de deux manières de déclencher automatiquement flush() appelle après chaque action de sortie :

  1. Appelez ob_implicit_flush(). Bien que le nom de cette fonction suggère un impact sur le « tampon de sortie », elle opère en réalité sur le tampon d'écriture au niveau du serveur.
  2. Activez le vidage implicite globalement en définissant implicit_flush sur On dans votre fichier php.ini. Cela imite l'effet de ob_implicit_flush(). Cependant, le manuel met en garde contre cette approche en raison des implications potentielles sur les performances.

Avec ces informations à votre disposition, vous possédez les moyens de résoudre le problème de mise en mémoire tampon qui afflige votre script de relais et d'ouvrir la voie à des données transparentes. diffusion en continu.

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