PHP - Realizar operaciones con muchos registros sin aumentar el tiempo de ejecución

   
Vista:

Realizar operaciones con muchos registros sin aumentar el tiempo de ejecución

Publicado por Diego (4 intervenciones) el 09/01/2015 14:27:30
Hola a todo,

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 sin tener que aumentar el max_execution_time y todas esas cosas.

Gracias por su ayuda.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de xve

Realizar operaciones con muchos registros sin aumentar el tiempo de ejecución

Publicado por xve (5523 intervenciones) el 10/01/2015 01:09:40
Hola Diego, primeramente mostrar 5000 registros en una pagina web no es muy recomendable, por la carga que esto genera en el navegador al tener que renderizar tanto código... pero aparte de eso, la manera que yo creo que seria la correcta seria:

1.- hacer la consulta con un lenguaje de consola, como puede ser php en modo script, python, o java...
2.- El resultado lo pondría en un archivo o en memoria utilizando por ejemplo REDIS (base de datos no relacional que trabaja en memoria en formato key=>value)
3.- Desde el código PHP de la web, leería el archivo con el resultado o leer la memoria de REDIS.

El script lo puedes ejecutar cada n minutos, horas, días, etc... y desde la web, la carga sera muy rapida.


Espero que te sirva... coméntanos, ok?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar