Tema: Flush
Ver Mensaje Individual
  #3 (permalink)  
Antiguo 06/01/2005, 09:00
Cluster
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
RollBack
Teóricamente debería funcionar .. las funciones ob_start() inician la captura de todo lo que envias al buffer de salida .. header() con tu Location (cabecera HTTP) redireciona, y ob_end_flush() termina de capturar el buffer y lo entrega a la salida, aunque podrías probar con ob_end_clean() que es lo que más he visto por los ejemplos de PHP.net ..

Personalemten no soy partidario de usar el control del buffer de PHP para hacer lo que estás haciendo tal vez argumentando que por "arriba" (en el flujo del scritp) envias algo de salida hacia el navegador (HTML, etc) antes de tu header() .. Deberías replantear el script, así evitar enviar HTML cuando no es necesario. Eso optimizará tu aplicación .. la captura del "buffer" y su gesión implica proceso y recursos del servidor para algo que realmente no es necesario y se puede solventar de otra forma.

Comun .... si usas un header() con un "Location" .. el script continua su ejecución hasta el final .. pese que tu envies esa cabecera HTTP que le indica a tu navegador que redireccione ("carge") hacia otro script .. Eso, dependiendo del flujo de tu código puede que no te afecte en nada .. pero si haces cosas tipo:

Código PHP:
if ($algo){
  
header("location: tal.tal");
}

// otros procesos que se ejecuten si $algo no se cumplió ... 
En ese caso .. no te va a venir nada bien que se ejecute el resto del script despues de tu header() de Location .. así que es recomendable usar un exit; tras dicho header() ...

Un saludo,