Foros del Web » Programando para Internet » PHP »

Como hago para cargar una parte de una pagina, mientras el resto esta en proceso?

Estas en el tema de Como hago para cargar una parte de una pagina, mientras el resto esta en proceso? en el foro de PHP en Foros del Web. Hola: Como hago para cargar una parte de la pagina, ya sea el banner o un menu, y que el resto se cargue despues, es ...
  #1 (permalink)  
Antiguo 16/07/2003, 23:03
 
Fecha de Ingreso: abril-2003
Ubicación: Bogota
Mensajes: 131
Antigüedad: 21 años
Puntos: 2
Como hago para cargar una parte de una pagina, mientras el resto esta en proceso?

Hola: Como hago para cargar una parte de la pagina, ya sea el banner o un menu, y que el resto se cargue despues, es que tengo un proceso que es un poco demorado, y no se como hacer para que no quede la pagina en blanco esperando que se cargue todo, por ahi me dijeron algo de un flush pero no se como se usa



gracias
  #2 (permalink)  
Antiguo 17/07/2003, 05:40
Avatar de kco
kco
 
Fecha de Ingreso: septiembre-2001
Mensajes: 249
Antigüedad: 22 años, 6 meses
Puntos: 0
Eso te lo comentaran mejor en el foro de javascript.

Un saludo de unPHPero+
kco
  #3 (permalink)  
Antiguo 17/07/2003, 10:15
 
Fecha de Ingreso: julio-2003
Mensajes: 165
Antigüedad: 20 años, 9 meses
Puntos: 1
Hola,

Tratar de garantizar que ciertas zonas de una página web se carguen antes que otras, o definir un orden para que diferentes elementos de una página vayan emergiendo en el navegador del cliente, es un tema un poco de magos. Si estás dispuesto a implementar soluciones del lado del cliente (cosa que en tu caso considero razonable), te recomiendo que sigas el consejo de nuestro amigo quien te ha dicho que consultes en el foro de javascript.

Respecto al tema del flush que te han comentado, te puedo contar que es un mecanismo que intenta enviar al cliente inmediatamente toda la información hasta ahora acumulada por el motor de PHP, limpiando el búfer que usualmente se utiliza como punto de almacenamiento intermedio.

Verás, por una serie de razones, especialmente relacionadas con el desempeño y la eficacia del intérprete, por lo general la salida que produce cualquier programa de PHP orientado a web es acumulado en un búfer, y una vez toda la información está lista, ahí es cuando ésta es enviada al cliente. Por esta razón, en ocasiones se puede apreciar el efecto de que cuando uno visita determinada página, el navegador espera por un momento, y de pronto de un solo golpe despliega todo el contenido de la página; el navegador tan solo estaba esperando a que el servidor terminara de dar la respuesta para mostrarla al usuario. Si se desa modificar este comportamiento, ahí es cuando entran en juego los búferes intermedios y los famosos flush.

Lamentablemente, como te he dicho, tener una garantía sobre qué es lo que va a apreciar finalmente el visitante de la página es prácticamente imposible. Hay muchos elementos que intervienen: el servidor web, los canales de comunicación (incluyendo proxys y demás), y finalmente los mismos navegadores. Cada uno de estos personajes puede meter sus "sucias manos" en el proceso, haciendo las cosas como a ellos les parece que está bien. Desde el punto de vista de quien desarrolla la página, solo queda hacer uso de los recursos de los que dispone y rogar que la mayoría de visitantes de la página reciban la experiencia que uno ha preparado para ellos, del modo en que uno lo ha planeado.

Pero bueno, hablando concretamente de PHP, existen ciertos controles que uno puede modificar. Hay funciones que permiten modificar en tiempo de ejecución algunos parámetros de configuración de PHP, o alternativamente si uno tiene la posibilidad de modificar la configuración global directamente (por ejemplo, mediante la modificación del archivo php.ini), es posible jugar con el parámetro implicit_flush.

Claro que una función más directa es la misma flush(), la cual realiza un flush explícito en un determinado punto del código. En caso de que quieras probar el funcionamiento de esta función, puedes escribir un pequeño programa de prueba, por ejemplo:

Código:
<?php

// Prueba que pretende mostrar el efecto de flush().

print "Realizando flush() explicito:<br />\n";
for ($i = 1; $i <= 5; $i++) {
    print "$i<br />\n";
    flush ();
    sleep (1);
}

print "<br />\nEsta vez sin usar flush() explicito:<br />\n";
flush ();

for ($i = 1; $i <= 5; $i++) {
    print "$i<br />\n";
    sleep (1);
}

print "fin.\n";

?>
Si al ejecutar este ejemplo aprecias una diferencia entre el fragmento que usa flush() y el que no, entonces vas por buen camino y ya tendrás al menos un recurso para tratar de generar efectos interesantes en tus páginas. Si no es así, posiblemente es que tu mismo has sido víctima de uno de los "terroristas" intermedios que arruinan el propósito del flush. Algunos causantes típicos de este problema son los módulos de compresión de los servidores web, como mod_gzip (en mi caso, por ejemplo, yo lo utilizo y lo he tenido que deshabilitar temporalmente para realizar esta prueba.) También es posible que el mismo navegador esté controlando el modo en que la página aparece frente al usuario. En la documentación de PHP mencionan que este es el caso de algunas versiones de Netscape, que esperan ciertos tokens especiales, como retornos de línea y etiquetas explícitas para realizar los flushs.

En fin, espero que al menos como referencia, te resulte valiosa esta información. Saludos.
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




La zona horaria es GMT -6. Ahora son las 11:12.