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.