44 votes

Différence entre ob_get_clean et ob_get_flush

Ils semblent tous les deux faire la même chose : retourner le contenu du tampon de sortie et le supprimer ensuite.

Lequel devrais-je utiliser ?

8 votes

Retirer mon vote négatif parce que je suis aussi confus par les descriptions dans le manuel (il n'est pas parfaitement clair si "flush" signifie "output", ce que je pense être le cas)

9 votes

Patience, jeune padawan ! Il n'y a que 6 minutes et 10 vues de page.

0 votes

Je pense que le décompte des vues ne fonctionne pas car j'ai rafraîchi la page environ 10 fois

115voto

arnaud576875 Points 35281

ob_get_clean() supprime le tampon (sans l'afficher) et renvoie son contenu.

ob_get_flush() affiche le tampon, le supprime, et renvoie son contenu.

Les deux fonctions termineront le tampon.

0 votes

Bien que vieux, mais m'a évité beaucoup de prises de tête. Chapeau !!

1 votes

L'OP n'est pas revenu depuis le Onzième Septembre!

0 votes

21voto

Shef Points 21595

ob_get_clean va simplement renvoyer le contenu du tampon et l'assigner à la variable de votre choix, mais il ne produira aucune sortie.

ob_get_flush, en revanche, fait tout ce que ob_get_clean fait, mais il affiche également le contenu.

11voto

phihag Points 89765

Les deux fonctions vident le tampon de sortie, désactivent le buffering de sortie et retournent la valeur précédente du tampon.

Cependant, ob_get_flush envoie d'abord le tampon actuel au client, tandis que ob_get_clean le supprime simplement.

0 votes

-1 pour avoir dit que ob_get_clean "ne modifie pas les options de mise en tampon". Ceci n'est pas correct - les deux désactivent en fait la mise en tampon. Selon la page de manuel de ob_get_clean "Renvoie le contenu du tampon de sortie et met fin à la mise en tampon de sortie". Il n'est pas non plus très clair de dire qu'il ignore le tampon. Ce n'est pas le cas - il le renvoie comme l'ont dit les autres réponses. Ignorer implique pour moi qu'il le jette complètement.

0 votes

@Adam Belle trouvaille, j'ai réécrit la réponse. "Discard" et "flush" sont des termes au niveau du réseau, mais la nouvelle version devrait clarifier cela.

-6voto

user885983 Points 149

Pour répondre directement à votre question:

Si vous souhaitez recommencer à mettre en mémoire tampon la sortie après avoir vidé le tampon, utilisez ob_get_clean car la mise en mémoire tampon sera toujours prête sans avoir besoin de la réactiver. (rappelez-vous que cela ne peut être utilisé que s'il n'y a aucun texte, même un espace, envoyé au navigateur). Ainsi, pour des utilisations plus générales, tous mes livres de programmation penchent vers ob_get_flush (puisque la plupart des scripts n'utilisent qu'une seule mémoire tampon)

3 votes

ob_get_clean arrête le buffering de sortie. Vous devriez le réactiver ensuite.

1 votes

Ce n'est pas la bonne réponse comme indiqué ci-dessus. Vérifiez la réponse de arnaud576875 ci-dessous.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X