Foros del Web » Programando para Internet » PHP »

Flush

Estas en el tema de Flush en el foro de PHP en Foros del Web. Hola, tengo lo siguiente: <? ob_start(); //La variable error toma true o false segun ortas instrucciones que aqui no puse para resumir. if(error){ header (" ...
  #1 (permalink)  
Antiguo 06/01/2005, 00:40
 
Fecha de Ingreso: octubre-2004
Mensajes: 258
Antigüedad: 13 años, 2 meses
Puntos: 1
Flush

Hola, tengo lo siguiente:

<?
ob_start();

//La variable error toma true o false segun ortas instrucciones que aqui no puse para resumir.

if(error){
header (" Location : index.php");
ob_end_flush();
exit;
}

..........
..........
..........
.........
ob_end_flush();
?>

lo que me pasa es que el HEADER no me funciona si hay un error (error=true), quiero que se redirecciones a index.php y el OB_START() se de por finalizado.
y lo que hace es que se queda en la misma pagina (no presenta nada, no importa) cuando deberia ir a index.php.

Como hago?, en caso de que error=true ir a index.php ? , pero tengan en cuenta que debo usar el OB_START()
__________________
Salute !!!
RollBack
  #2 (permalink)  
Antiguo 06/01/2005, 07:01
 
Fecha de Ingreso: enero-2002
Mensajes: 132
Antigüedad: 15 años, 11 meses
Puntos: 1
el ob_end_flush(); antes del rediccionar

Hola, el header location no debe tener código html escrito antes, porque si no, no funciona. Quizas ese sea el error, lo sé.
En segundo lugar, el ob_end_flush(); debe ir antes que el header y el exit no sirve para nada, ya que con el header sale de la pagina actual y se redirecciona automaticamente a la pagina especificada.

Un saludo.
__________________
Un saludo, esperando ser de ayuda...
COMUN :stress:

Diseño y Programación
Tierra de Califas
http://www.tecnocodigo.com/dipro/
  #3 (permalink)  
Antiguo 06/01/2005, 09:00
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
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,
  #4 (permalink)  
Antiguo 06/01/2005, 23:12
 
Fecha de Ingreso: octubre-2004
Mensajes: 258
Antigüedad: 13 años, 2 meses
Puntos: 1
Hola amigos, gracias por responder, en realidad NUNCA pongo codigo HTM antes que el php, yo generalmente proceso todo lo que es PHP arriba de todo y segun de bien todo el proceso continuo con el htm, voy a probar lo que me dicen ahora miso.

en cuanto al OB_START() que me dice el amigo cluster, yo lo empeze a usar porque note en el server una gran rapidez haciendolo de esta manera, la pagina carga mas rapido con el OB que sin el (no me pregunten porque) , mas alla que es un buffer (que se que es) parece que me agilizo el proceso.

Bueno...............GRACIAS A LOS DOS, voy a hacer lo que me dicen a ver que surje, sino, como dice el amigo Cluster, tendre que replantear el codigo.

Gracias...........
__________________
Salute !!!
RollBack
  #5 (permalink)  
Antiguo 07/01/2005, 07:22
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
mm lo que se usa mucho la gestión del buffer para -además de esto- comprimir tu pagina (gzip) y así enviarla al cliente. Si quieres investigar sobre el tema:

http://www.php.net/ob_gzhandler

Un saludo,
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 00:36.