Foros del Web » Programando para Internet » PHP »

Para que utilizar ob_start?, (en el manual esta en ingles).

Estas en el tema de Para que utilizar ob_start?, (en el manual esta en ingles). en el foro de PHP en Foros del Web. Hallo esto en un script pequeño de PHP: <?php ob_start(); CODIGO ob_end_flush() ?> Para que sirve eso?...
  #1 (permalink)  
Antiguo 25/08/2004, 08:20
 
Fecha de Ingreso: febrero-2004
Mensajes: 1.987
Antigüedad: 20 años, 2 meses
Puntos: 22
Para que utilizar ob_start?, (en el manual esta en ingles).

Hallo esto en un script pequeño de PHP:
<?php ob_start();

CODIGO

ob_end_flush() ?>

Para que sirve eso?
  #2 (permalink)  
Antiguo 25/08/2004, 08:46
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Bueno .. la explicación del "concepto" en sí de esas funciones lo tienes en castellano:

http://www.php.net/manual/es/ref.outcontrol.php

Las funciones que comentas .. ob_start() inicia la "captura" del buffer de salida de PHP . y ob_end_flush() termina la captura del buffer de salida y como es un "flush" además lo entrega a la salida (por qué hay otras funciones que sólo "terminan" la captura pero no hacen nada más ... útil en otros casos).

Cuando hablo de "buffer de salida" será todo lo que ese "CODIGO" o llamada a una página .. etc proboque como salida (un echo "algo" .. o HTML directo .. etc ..)

Un saludo,
  #3 (permalink)  
Antiguo 25/08/2004, 09:03
 
Fecha de Ingreso: febrero-2004
Mensajes: 1.987
Antigüedad: 20 años, 2 meses
Puntos: 22
Y eso pa que sirve?
Cuando si/no utilizarlo?

Muy amable.
  #4 (permalink)  
Antiguo 25/08/2004, 09:26
Avatar de chubu  
Fecha de Ingreso: enero-2002
Ubicación: Buenos Aires
Mensajes: 133
Antigüedad: 22 años, 2 meses
Puntos: 0
Esto es más que útil en varios casos. Capturar la salida de php permite procesarla de tal o cual forma, por ejemplo puedes (en caso de no contar con un webserver que lo haga) comprimir la salida de tu script usando gzip, para acelerar la descarga de la misma (es util cuando el html generado es muy grande). Otro uso, que he visto en ciertos casos, puede ser el de modificar el html generado de cierta forma particular (pasar la salida por algúna utilidad del estilo Tidy por ejemplo).
__________________
:pensando:hay algo mal que no anda bien
  #5 (permalink)  
Antiguo 25/08/2004, 11:26
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Un ejemplo típico del uso del control del buffer podría ser el de evitar que te dé un error el uso de header() o setcookie() cuando has enviado ya HTML (salida en general) al navegador. A mi en lo personal no me gusta este uso del control del buffer de salida .. Como "buffer" que es, se almacena temporalente en algún sitio .. así que es un consumo extra de recursos para el servidor para una taréa que se solventa "ordenando" el código de otra forma.

Otro caso: Tienes una pagína remota que muestra cierta información (ejemplo .. cotizaciones de cambio de moneda de un banco) .. necesitas esos datos, pero no la página que los "adorna" y muestra en sí. Vía estas funciones .. llamarías a esa página y capturarías su resultado (el HTML de esta/etc) para filtrarlo (ya lo tendrías en una variable) y obtener sólo lo que te interesa. Finalmente descartarías eso que capturases (usando ob_end_clean() ..o similar) y aprovechas tu dato ya filtrado en el código/presentación habitual que hagas ...

Un saludo,
  #6 (permalink)  
Antiguo 25/08/2004, 12:35
 
Fecha de Ingreso: febrero-2004
Mensajes: 1.987
Antigüedad: 20 años, 2 meses
Puntos: 22
Mi cerebro malo...

Es algo como: "PHP, No saques nada al publico hasta que no aparezca [ ob_end_flush() ]"?

Algo como "No imprimir nada hasta despues de [ob_end_flush()]"?

Voy borracho...
  #7 (permalink)  
Antiguo 25/08/2004, 14:56
Avatar de chubu  
Fecha de Ingreso: enero-2002
Ubicación: Buenos Aires
Mensajes: 133
Antigüedad: 22 años, 2 meses
Puntos: 0
Exacto (o casi, pero bueno).
__________________
:pensando:hay algo mal que no anda bien
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

SíEste tema le ha gustado a 1 personas (incluyéndote)




La zona horaria es GMT -6. Ahora son las 08:09.