Foros del Web » Programando para Internet » PHP »

diferencia entre ob_end_flush y ob_end_clean

Estas en el tema de diferencia entre ob_end_flush y ob_end_clean en el foro de PHP en Foros del Web. Pongo la definicion que hay en el manual ob_end_clean — Limpiar (eliminar) y deshabilitar los búferes de salida ob_end_flush — Volcar (enviar) el búfer de ...
  #1 (permalink)  
Antiguo 12/12/2011, 18:01
Avatar de hackjose  
Fecha de Ingreso: abril-2010
Ubicación: Edo Mexico
Mensajes: 1.178
Antigüedad: 14 años
Puntos: 131
diferencia entre ob_end_flush y ob_end_clean

Pongo la definicion que hay en el manual

ob_end_clean — Limpiar (eliminar) y deshabilitar los búferes de salida

ob_end_flush — Volcar (enviar) el búfer de salida y deshabilitar el uso del búfer

en el caso de clean dice "Limpiar(elimina)" Ok esto lo entiendo pero en el caso de flush que dice "Volcar (enviar)" a donde envia el contenido del buffer? o a que se refiere con enviar.
  #2 (permalink)  
Antiguo 12/12/2011, 18:06
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: diferencia entre ob_end_flush y ob_end_clean

Mira esto:
Código PHP:
ob_start();
echo 
'FOO';
ob_end_clean();

ob_start();
echo 
'BAR';
ob_end_flush(); 
La cadena FOO no se vuelca (envía), sin embargo la cadena BAR si.

Eso significaría "volcar", o en otras palabras "escupir", imprimir, etc.

Recuerda que la salida por defecto de PHP es el buffer global, que finalmente se envía al browser.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #3 (permalink)  
Antiguo 12/12/2011, 18:39
Avatar de hackjose  
Fecha de Ingreso: abril-2010
Ubicación: Edo Mexico
Mensajes: 1.178
Antigüedad: 14 años
Puntos: 131
Respuesta: diferencia entre ob_end_flush y ob_end_clean

Gracias me aclaro bastantes cosas, aclarame otra cosa porfavor.

Los 2 ejemplos hacen lo mismo osea imprimen "BAR"
Código PHP:
Ver original
  1. echo 'BAR';
  2.  
  3. echo 'BAR';

Pero que pasa con ob_start() que no se supone que almacena "el contenido" en un buffer?
Por que paresiere que no es asi ya que el ejemplo 2 tambien imprime "BAR" y no le puse ob_end_flush para que enviara el contenido al navegador.

O la otra es esta
ob_start(); toma el contenido y lo almacena en un buffer.
si ponemos esto

ob_start();
contenido

el contenido si lo almacena en un buffer pero aparte tiene ya integrado un ob_end_flush

si ponemos esto

ob_start();

contenido

ob_end_flush();

Es lo mismo que el anterior solo que estamos diciendo explicitamente "Imprime"
o como funcionan en realidad estas funciones?

Última edición por hackjose; 12/12/2011 a las 19:22
  #4 (permalink)  
Antiguo 12/12/2011, 20:51
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: diferencia entre ob_end_flush y ob_end_clean

Consulta el manual, de verdad, no quiero especular pero el primer ejemplo que pones es bastante claro.

En comparación con el segundo solo deduzco que, php al notar que llegaste al final de la ejecución del script hará un flush() implicito de los buffers abiertos, no lo se realmente por eso debes investigar.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #5 (permalink)  
Antiguo 12/12/2011, 21:40
Avatar de Sourcegeek
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: $mex['B.C.'];
Mensajes: 1.816
Antigüedad: 14 años, 11 meses
Puntos: 322
Respuesta: diferencia entre ob_end_flush y ob_end_clean

Creo que hay una directiva del php.ini llamada implicit_flush que es eso mismo, hace un flush implícito al final de la ejecución del script.

Por ahí leí que la función ob_implicit_flush es capaz de deshabilitar ésta directiva pero no me funcionó, incluso usé ini_set pero tampoco. Deberías investigar sobre el tema.
La verdad no estoy muy experimentado en el tema de los búferes.

Saludos
__________________
Buscas desarrollador web? Sourcegeek. Diseño web, Maquetación y Programación
¡Escribe bien! Esto es un foro, no un Facebook para que escribas con los pies
  #6 (permalink)  
Antiguo 13/12/2011, 00:26
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 14 años, 11 meses
Puntos: 1517
Respuesta: diferencia entre ob_end_flush y ob_end_clean

Cita:
Iniciado por pateketrueke Ver Mensaje
En comparación con el segundo solo deduzco que, php al notar que llegaste al final de la ejecución del script hará un flush() implicito de los buffers abiertos, no lo se realmente por eso debes investigar.
¡Exacto!

Cita:
Iniciado por Sourcegeek Ver Mensaje
Creo que hay una directiva del php.ini llamada implicit_flush que es eso mismo, hace un flush implícito al final de la ejecución del script.

Por ahí leí que la función ob_implicit_flush es capaz de deshabilitar ésta directiva pero no me funcionó, incluso usé ini_set pero tampoco. Deberías investigar sobre el tema.
La verdad no estoy muy experimentado en el tema de los búferes.

Saludos
No, lo que hace ob_implicit_flush es que imprime directamente por cada bloque de código, es decir
Código PHP:
Ver original
  1. //...
  2. echo 'foo bar baz';
  3.  
  4. echo 'candy fruits vegetable';
Es lo mismo que hacer algo así
Código PHP:
Ver original
  1. //...
  2. echo 'foo bar baz';
  3.  
  4. echo 'candy fruits vegetable';
Es que inmediatamente termine un echo imprime directamente en pantalla. Una de las explicaciones la puedes ver aquí http://www.php.net/manual/en/outcont...figuration.php
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #7 (permalink)  
Antiguo 13/12/2011, 11:27
Avatar de hackjose  
Fecha de Ingreso: abril-2010
Ubicación: Edo Mexico
Mensajes: 1.178
Antigüedad: 14 años
Puntos: 131
Respuesta: diferencia entre ob_end_flush y ob_end_clean

Interesante lo del flush implicito igual me aclara bastantes cosas gracias amigos por su tiempo y esfuerzo por ayudar

Etiquetas: diferencia
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 07:21.