Comunidad de diseño web y desarrollo en internet online

Realizar operaciones largas sin aumentar el tiempo de ejecución

Citar            
MensajeEscrito el 10 Ene 2015 10:20 pm
Hola a todos,

En varias ocasiones me enfrento a problemas como exportar registros a Excel o CVS para un informe o lo que sea y esto conlleva sacar de la base de datos 1000, 2000 o 10000 registros; para ello hay que correr un script que tarda varios minutos en completar la operación y me veo obligado a cambiar la configuración de PHP y aumentar el tiempo límite de ejecución o el límite de memoria por usuario y colocar valores como 3600 segundos o 1GB máximo, lo que en un entrono de producción no es para nada recomendable por razones de seguridad y todo esa verborrea que todos conocemos.

No se trata de un desarrollo que esté realizando en este momento así que no tengo un código o un problema especifico que limite las soluciones que me puedan sugerir.

Solo deseo saber cual es manera correcta, el deber ser, como debería crear estos programas, para que realicen operaciones que llevan mucho tiempo, sin tener que aumentar el tiempo máximo de ejecución y hacer otras cosas que atenten contra una buena configuración para un servidor de producción.

Por ejemplo como podría ejecutar una consulta que entregue 5000 registros de una base de datos así sea solo para mostrarlos en pantalla o cualquier otra cosa sin tener que aumentar el max_execution_time y todas esas cosas.

Gracias por su ayuda.

Por andres1033

1 de clabLevel



 

chrome
Citar            
MensajeEscrito el 12 Ene 2015 12:08 pm
Pues ejecuta el script en la shell.

Por DriverOp

Claber

2510 de clabLevel



 

opera
Citar            
MensajeEscrito el 14 Ene 2015 08:26 pm
Hola, andres1033,

En una ocasión tuve un problema como el tuyo pero para importar. Me imagino que podrías hacer lo mismo pero en vez de para importar para exportar.
Yo lo solucioné haciendo que la interfaz llamará al proceso de importar de manera paginada.
Es decir, primero llamaba:
/importar.php?ini=0 ( esto importaba los 1000 primero )
cuando se devolvía un "ok", lanzaba el siguiente
/importar.php?ini=1000 ( esto importaba los 1000 siguientes )
y seguía así hasta que el servidor devolvía un "end", señalando que ya se habían acabado los datos del servidor.

Espero que te sirva
Un saludo

Por trasweb

17 de clabLevel



 

Programador Web A Medida

firefox
Citar            
MensajeEscrito el 27 Ene 2015 03:14 pm
Debe ser por que no utilizas u sistema de chace, proba usar algún microframework o una clase sencilla de cache, eso va a ayudar.

Por JoaquinGonzalez

3 de clabLevel



 

chrome

 

Cristalab BabyBlue v4 + V4 © 2011 Cristalab
Powered by ClabEngines v4, HTML5, love and ponies.