Foros del Web » Programando para Internet » PHP »

Bucle largo en PHP que ejecuta sentencias MySQL ¿Se puede hacer por paquetes?

Estas en el tema de Bucle largo en PHP que ejecuta sentencias MySQL ¿Se puede hacer por paquetes? en el foro de PHP en Foros del Web. Hola a todos: Descripción del problema: Tengo un script en PHP que ejecuta un blucle while que sirve para sincronizar registros de una serie de ...
  #1 (permalink)  
Antiguo 31/10/2007, 14:06
Avatar de Escoffie  
Fecha de Ingreso: abril-2003
Ubicación: Mérida, Yucatán
Mensajes: 242
Antigüedad: 20 años, 11 meses
Puntos: 9
Bucle largo en PHP que ejecuta sentencias MySQL ¿Se puede hacer por paquetes?

Hola a todos:

Descripción del problema:
Tengo un script en PHP que ejecuta un blucle while que sirve para sincronizar registros de una serie de tablas a otra que tiene un campo longblob donde se inserta una imagen.
El proceso realiza más de 8000 consultas (entre SELECTS, INSERTS y UPDATES) y tarda de 5 a 8 minutos en ejecutarse y sube el uso del servidor MySQL hasta más del 120% (de verdad, eso marca). Es decir, se consume todos los recursos del Servidor.

Preguntas:
¿Existe algún modo de ejecutar por partes el Script?
Es decir, ¿se puede que ejecute las consultas de 100 en 100 haciendo una pausa de por ejemplo, 30 segundos entre cada bloque?
¿Alguien tiene alguna propuesta diferente?

Restricciones:
No puedo evitar el uso del longblob porque esa tabla sirve para imprimir credenciales y el software que las imprime requiere que la foto esté en un campo Blob (que es como el Ole de Access).
La información cambia constantemente, y es necesario sincronizar con mucha frecuencia estas tablas.
El sistema está actualmente en uso, mucha gente está involucrada y todos los datos ya están en la Base de Datos, así que no puedo replantearme el problema desde cero, sino que tengo que resolverlo con lo que ya está.

Más información:
He visto muchos Posts donde hacen esto, pero con envíos de correo electrónico. El problema es que remiten a scripts ya hechos y no explican como hacerlo.
Estoy usando un servidor compartido Apache II, PHP 4.3 y MySQL 4 y la aplicación corre en línea. La ejecuta un Cron Job cada 2 horas, y mi proveedor de hosting me quiere matar.

Saludos y muchas gracias
  #2 (permalink)  
Antiguo 31/10/2007, 14:10
Avatar de Seppo  
Fecha de Ingreso: marzo-2005
Ubicación: Buenos Aires, Argentina
Mensajes: 1.284
Antigüedad: 19 años
Puntos: 17
Re: Bucle largo en PHP que ejecuta sentencias MySQL ¿Se puede hacer por paquetes?

Cita:
Preguntas:
¿Existe algún modo de ejecutar por partes el Script?
Es decir, ¿se puede que ejecute las consultas de 100 en 100 haciendo una pausa de por ejemplo, 30 segundos entre cada bloque?
Podés contar las iteraciones y hacer un sleep cada tanto.

No se me ocurre una alternativa, dentro de las limitaciones :(
  #3 (permalink)  
Antiguo 31/10/2007, 14:54
Avatar de Escoffie  
Fecha de Ingreso: abril-2003
Ubicación: Mérida, Yucatán
Mensajes: 242
Antigüedad: 20 años, 11 meses
Puntos: 9
Re: Bucle largo en PHP que ejecuta sentencias MySQL ¿Se puede hacer por paquetes?

Gracias Seppo:

Excelente solución, y muy sencilla.
Funcionó a la perfección.

Saludos :)
  #4 (permalink)  
Antiguo 23/07/2015, 17:10
Avatar de zamora322  
Fecha de Ingreso: septiembre-2011
Mensajes: 5
Antigüedad: 12 años, 6 meses
Puntos: 0
Respuesta: Bucle largo en PHP que ejecuta sentencias MySQL ¿Se puede hacer por paquet

También me ha servido, muchas gracias :D
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 11:28.