2017-02-16 12 views
1

Je sais que les méthodes liées à la mise en mémoire tampon de sortie:Quelle est l'utilisation de la méthode ob_get_length()?

<?php 
ob_start(); 

// some code 

ob_end_flush(); 
ob_end_clean(); 

mais je ne peux pas comprendre pourquoi aurai-je besoin de la longueur de la mémoire tampon de sortie. il y a une question ici est SOF sur la mesure de la bande passante de l'utilisateur, bien que ce calcul devra mesurer des images et d'autres fichiers qui ne sont pas adressées.

J'ai vérifié le manuel de PHP et le "pourquoi" n'est pas là.

Répondre

1

Répondant "pourquoi l'utiliser". Afin de répondre à cela, nous devons d'abord comprendre pourquoi nous devons utiliser ob_start. Habituellement, il est utilisé pour deux fins:

  1. Lorsque nous voulons envoyer des en-têtes HTTP, mais nous ne savons pas, qu'il n'y a pas rendu avant (la première sortie déclenchera en-tête d'envoi, donc si vous utilisez, echo par exemple, avant header, le dernier ne fonctionnera pas)
  2. Lorsque nous voulons envoyer notre sortie par morceaux pour la performance. (Votre code peut être écrit avec beaucoup de echo ou print, et le plus souvent ils outputing que de petites données, de sorte que vous envoyez de petites portions de données au navigateur, ce qui affecte les performances.)

Alors maintenant, vous pouvez commencer à deviner, pourquoi nous devons utiliser ob_get_length(). Par exemple: je veux envoyer ma sortie par gros morceaux, donc j'active la bufferisation de sortie et avec l'aide de ob_get_length je peux contrôler le nombre de données que je peux écrire dans le buffer, avant de l'envoyer.

+0

bonne réponse merci – docesam

0

ob_get_length retourne la longueur du contenu dans la mémoire tampon de sortie ..

Voici exemple simple ..

<?php 

ob_start(); 

echo "Hello "; 

$len1 = ob_get_length(); 

echo "World"; 

$len2 = ob_get_length(); 

ob_end_clean(); 

echo $len1 . ", ." . $len2; 
?> 

L'exemple ci-dessus sortie: 6, 11

Mise à jour: ob_get_length() est utile si vous souhaitez envoyer un en-tête HTTP Content-Length personnalisé - mais uniquement pour les utilisateurs expérimentés!

+0

la question est: pourquoi j'ai besoin de cette information? – docesam

+0

ob_get_length() est utile si vous souhaitez envoyer un en-tête HTTP Content-Length personnalisé - bien que ce soit réservé aux utilisateurs expérimentés! –