Foros del Web » Programando para Internet » PHP »

Pensando la forma de optimizar un script PHP

Estas en el tema de Pensando la forma de optimizar un script PHP en el foro de PHP en Foros del Web. Buenas, Os explico el problema a ver si encontráis alguna solución... Analizo un fichero xml e introduzco todos los datos en la base de datos, ...
  #1 (permalink)  
Antiguo 28/12/2009, 16:00
Avatar de neodani  
Fecha de Ingreso: marzo-2007
Mensajes: 1.811
Antigüedad: 17 años, 1 mes
Puntos: 20
Pensando la forma de optimizar un script PHP

Buenas,

Os explico el problema a ver si encontráis alguna solución...

Analizo un fichero xml e introduzco todos los datos en la base de datos, hasta aquí bien. La carga se realiza rápidisima, en menos de 1 seg tienes cargado más de 3.000 filas

Sin embargo, el script compara si ha habido cambios en el fichero XML (que por decirle de alguna manera cada linea tiene un identificador unico). Por lo que el script va leyendo el fichero y por cada linea que procesa hace un update del campo correspondiente.

Problemas... la primera carga la hace bien porque no tiene que comparar nada, las cargas posteriores tiene que hacer 3.000 updates para revisar todos los cambios y tarda más de 15 seg.

He probado introducir la carga en una tabla y luego cuando vuelvo a comprobar si hay cambios, los meto en otra tabla diferente, de esta forma comparo el campo concreto para ver si ha cambiado, pero no ahorro nada de tiempo...

Qué formas se os ocurre de hacerlo de una manera que hacerlo "eficaz"?

PD: En el futuro en lugar de 3.000 podrían ser más de 40.000 filas de xml como procesas tal bestialidad de fichero?

Muchas gracias de antemano!
  #2 (permalink)  
Antiguo 28/12/2009, 16:18
Avatar de jackson666  
Fecha de Ingreso: noviembre-2009
Ubicación: Buenos Aires, Argentina
Mensajes: 1.971
Antigüedad: 14 años, 5 meses
Puntos: 65
Respuesta: Pensando la forma de optimizar un script PHP

Porque haces un update masivo? es totalmente necesario? La verdad del todo bien no entendi

En tu archivo XML tenes 3000 lineas??
__________________
HV Studio
Diseño y desarrollo web
  #3 (permalink)  
Antiguo 28/12/2009, 16:52
 
Fecha de Ingreso: noviembre-2007
Ubicación: Lanus, Buenos Aires
Mensajes: 178
Antigüedad: 16 años, 5 meses
Puntos: 14
Respuesta: Pensando la forma de optimizar un script PHP

si es un script que se ejecuta en un cron (supongo que es un cron... no? :P) no hay problema que tarde tanto, muchas veces es inevitable, en mi trabajo tambien tenemos que procesar algunos xml's monstruosos y tarda eso o mas, pero como es una vez al dia o a la semana no importa...
  #4 (permalink)  
Antiguo 28/12/2009, 17:20
Avatar de neodani  
Fecha de Ingreso: marzo-2007
Mensajes: 1.811
Antigüedad: 17 años, 1 mes
Puntos: 20
Respuesta: Pensando la forma de optimizar un script PHP

Cita:
Iniciado por jackson666 Ver Mensaje
Porque haces un update masivo? es totalmente necesario? La verdad del todo bien no entendi

En tu archivo XML tenes 3000 lineas??
Buenas jackson666

El archivo XML tiene más de 3000 lineas correcto, y hay campos con identificadores únicos. Estos campos son los que pueden cambiar a medida que pase el tiempo. También tienen un tiempo de vida finito. Por ej. pueden durar 7 días y luego ya dejan de actualizarse. Pero en ese momento aparecen otros nuevos campos, vamos que nunca se van ha acabar estos campos (lineas de xml) siempre se estan actualizando.

Qué se os ocurre? :D

rodrigo_00, piensa que los cambios pueden producirse en cualquier momento del día, por lo que tienes que comparar cada hora por ej. y ver si hay cambios.
  #5 (permalink)  
Antiguo 28/12/2009, 17:20
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Pensando la forma de optimizar un script PHP

estoy de acuerdo con rodrigo_00, definitivamente todo tiene un costo...

pero mas que optimizar el proceso, bien podrías reducir el XML ... o bien, si tiene datos de hace meses... y que ya no se van a actualizar... ¿porque siguen en el XML??

o bien, ordenar y utilizar varios XML ... uno por cada día, no se, algo así...

porque eso de re-procesar datos es demasiado ineficiente... y mas que acelerar el proceso, debes buscar mas formas de acortarlo, o dividirlo...
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #6 (permalink)  
Antiguo 29/12/2009, 00:48
Avatar de neodani  
Fecha de Ingreso: marzo-2007
Mensajes: 1.811
Antigüedad: 17 años, 1 mes
Puntos: 20
Respuesta: Pensando la forma de optimizar un script PHP

Cita:
Iniciado por pateketrueke Ver Mensaje
estoy de acuerdo con rodrigo_00, definitivamente todo tiene un costo...

pero mas que optimizar el proceso, bien podrías reducir el XML ... o bien, si tiene datos de hace meses... y que ya no se van a actualizar... ¿porque siguen en el XML??

o bien, ordenar y utilizar varios XML ... uno por cada día, no se, algo así...

porque eso de re-procesar datos es demasiado ineficiente... y mas que acelerar el proceso, debes buscar mas formas de acortarlo, o dividirlo...
Es posible que me expresara mal, el XML no va acumulando datos todos los meses, al contrario, cada día que pasa se elimina las entradas de ese día, pero que al "terminar el día" viene otro día más, por eso el volumen del XML es practicamente constante, y sí está actualizado con los últimos valores del día actual hacia delante (eventos futuros 7 días)

El problema es que tu metes todos los datos en la base de datos, al día siguiente el xml ha cambiado, lo del día anterior ya no está, se ha añadido un día más en el futuro (ej. muestra eventos de los proximos 7 días). Y cuando lo parseas tienes que ir comparando cada linea para ver si ha sido introducida previamente en la base de datos y si ha sido introducida ver que el valor del xml actual coincide con el que está guardado, sino coincide actualizarlo. (PARTE LENTA... aquí está el problema)

Sobre lo que dices pateketrueke de dividirlo, es el metodo que estoy utilizando actualmente, en lugar de procesar el fichero entero de 40.000 lineas puedo dividirlo en trozos de 3.000 lineas o así.

Espero más comentarios vuestros sobre como trataríais tal información!

Muchas gracias de antemano
  #7 (permalink)  
Antiguo 29/12/2009, 01:35
Avatar de zaetoner  
Fecha de Ingreso: noviembre-2007
Ubicación: La ciudad de México
Mensajes: 607
Antigüedad: 16 años, 5 meses
Puntos: 30
Respuesta: Pensando la forma de optimizar un script PHP

supongo que usas el xml para convivir con flash o parecido, pero por que no intentas hacer los cambios al momento que son alterados?, es decir cuando se altera el xml tambien cambiar la base de datos
__________________
...
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 22:31.