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 ?
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 ?
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.
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.
-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.
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)
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.
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
2 votes
@EEka: Ce système n'est pas si naïf - n'oubliez pas qu'il sait qui vous êtes :-)
1 votes
@Pekka Oui, dans le contexte de la mise en tampon de sortie php, flushing signifie en fait l'envoi des données.
0 votes
@EEka est-ce un bon moment pour accepter une réponse ? Nous nous inquiétons pour vous