2011-09-11 19 views
33

Ambos parecen hacer lo mismo: devolverle el contenido del buffer de salida y borrarlo después.Diferencia entre ob_get_clean y ob_get_flush

¿Cuál debo usar?

+6

Retirando mi voto porque yo también estoy confundido por las descripciones en el manual (No está del todo claro si "flush" significa "salida", que creo que sí) –

+0

... ¿así que nadie sabe? – EEka

+9

Paciencia, joven padawan! Han sido solo 6 minutos y 10 páginas vistas. – JJJ

Respuesta

-6

Para tratar directamente a responder a su pregunta:

Si desea comenzar de nuevo búfer de salida después de vaciar el búfer, a continuación, utilizar ob_get_clean como búfer de salida seguirá siendo preparada sin tener volver a encenderla. (recuerde que esto solo se puede usar si no hay texto, incluso el espacio en blanco se hace eco en el navegador). Así, para usos más generales, todos mis libros de programación se vuelven ob_get_flush (como un solo búfer por la mayoría de los scripts)

+3

'ob_get_clean' termina el almacenamiento en búfer de salida. Tendrás que volver a encenderlo. –

+1

No es la respuesta correcta como se señaló anteriormente. Verifique la respuesta de arnaud576875 a continuación. – jcisio

94

ob_get_clean() elimina el búfer (sin imprimirlo) y devuelve su contenido.

ob_get_flush() imprime el almacenamiento intermedio, lo elimina y devuelve su contenido.

+0

Aunque viejo, pero me salvó un montón de arañazos en la cabeza. Cabezas! –

+1

OP no regresó de septiembre Undécimo! – revo

17

ob_get_clean simplemente devolverá el contenido del búfer y lo asignará a la variable que desee, pero no generará ningún resultado.

ob_get_flush por el contrario, hace todo lo que hace ob_get_clean, pero también muestra el contenido.

7

Ambas funciones limpian el búfer de salida, desactivan el búfer de salida y devuelven el valor del búfer anterior.

Sin embargo, ob_get_flush primero envía el búfer actual al cliente, mientras que ob_get_clean simplemente lo descarta.

+1

+1 por mencionar 'ob_get_flush' desactiva el almacenamiento en memoria intermedia – NullUserException

+0

-1 por decir que ob_get_clean" no cambia las opciones de almacenamiento en búfer ". Esto no es correcto; ambos desactivan el almacenamiento en búfer. Desde la página man para ob_get_clean "Devuelve el contenido del búfer de salida y el búfer de salida final". Tampoco es muy claro decir que descarta el búfer. No lo hace, lo devuelve como dicen las otras respuestas. Descartes implica para mí que lo arroja por completo. – Adam

+0

@Adam Gran captura, reescribió la respuesta. Descartar y eliminar son términos de nivel de red, pero la nueva versión debe aclarar eso. – phihag