He estado esta tarde programando una migración de una base de datos para un amigo (bueno, esta tarde he terminado el script). Y ahora que ya lo tengo terminado y funciona todo bien y tal, pues quería aprovechar para practicar un poco con interfaces dinámicos con javascript y AJAX.
Lo que yo tengo es un script PHP que hace varios selects a una base de datos y luego va insertando cada fila en otra base de datos, además de inserts adicionales por aquello de las relaciones entre tablas, para que funcione todo. Sin saber nada de AJAX yo pensaba que permitía comunicar bidireccionalmente servidor con cliente. Pero después de buscar un poco, la conclusión a la que puedo llegar es que no. AJAX te sirve para hacer peticiones concretas al servidor una vez la página está ya servida. Mi gozo en un pozo.
Lo que yo quería hacer era ir mostrando unas barras de progreso a medida que iba insertando filas en la base de datos, pero por lo que veo me va a resultar un poco imposible. Se me ha ocurrido una solución un tanto extraña, pero que creo que va a funcionar.
La idea es la siguiente: cargar la página y, una vez cargada, mediante el conocido evento onLoad de javascript, arrancar una función javascript que vaya llamando al script de PHP. De esa forma conseguiré ir actualizando las barras de proceso en tiempo real, pero me temo que va a tardar bastante más en ejecutar. Bueno, habrá que probarlo.
Ya os contaré.
June 15th, 2008 at 21:50
[...] Javascript y PHP Secciones: Un desarrollador formado en Mordor | Puedes comentar, por el bien de la raza felinaNota: Los comentarios con más de un enlace serán retenidos para su moderación, debido a la posibilidad de que sea spam. Perdonad las disculpas
[...]
June 15th, 2008 at 22:22
Hala
Que buena noticia.
Y yo que pensé que no me iba a enterar de nada…
July 12th, 2008 at 4:27
Otra recomendación: Haz lo que dices tú, pero que el .php vaya escribiendo en un .txt cada por ejemplo 5 registros, la cadena “50/3000″ por decir algo, 50 de 3000, y en el evento document ready del html, cargas en una capa la barra de progreso utilizando por ejemplo jquery y su funcionalidad ajax, contra ese txt. El rendimiento de leer un txt es infinitamente superior al de lanzar un proceso php aparte para leer, asi que asi te irá más rápido.
Eso si, imagino que hablas de millones de registros, porque en caso contrario, en cualquier maquinilla mediocre te será imposible medir la diferencia
July 12th, 2008 at 12:14
Vaya, muchas gracias por el consejo, parece buena idea
Al final no ha hecho falta usar barras de progreso, pero lo tendré en cuenta para posibles desarrollos futuros 