Foros del Web » Programando para Internet » PHP »

PHP OO Mejorar Creación de Reporte PDF grande con PHP y optimizar el tiempo.

Estas en el tema de Mejorar Creación de Reporte PDF grande con PHP y optimizar el tiempo. en el foro de PHP en Foros del Web. Hola, compañeros del Foro, espero me puedan ayudar con este problema ya que he creado un reporte en PDF con la clase html2pdf de hasta ...
  #1 (permalink)  
Antiguo 08/12/2012, 21:22
Avatar de GustavoGutierrez  
Fecha de Ingreso: marzo-2012
Ubicación: Ciénaga, Magdalena, Colombia
Mensajes: 2
Antigüedad: 7 años, 10 meses
Puntos: 1
Pregunta Mejorar Creación de Reporte PDF grande con PHP y optimizar el tiempo.

Hola, compañeros del Foro, espero me puedan ayudar con este problema ya que he creado un reporte en PDF con la clase html2pdf de hasta 80 hojas, es decir y para ser mas precisos con boletines escolares, pues bien estos boletines requieren un boletín por cada estudiantes y para cada área o asignatura del estudiante hay que hacer ciertos cálculos para obtener la nota tengan en cuenta que este va acumulando las notas de los periodos anteriores y para los cuales se deben calcular notas también así que el procesamiento se incremente por 4 ya que son 4 periodos.
y esto hace que generar un boletín demore hasta 40 minutos o 1 hora que es mucho tiempo tengan presente que por ejemplo para cada nota hay que hacer varios query ya que cada nota se subdivide por 4 tipos y de cada tipo se calcula un porcentaje siendo la suma de los 4 porcentajes la nota que calculo para cada area.

Pues bien ese es el proceso complejo que hay que hacer y repetitivo para cada estudiante, y necesito optimizar la cantidad que querys y ciclos ya que como les dije este proceso es muy demorado entonces he desido rehacer estos boletines para ello usare o cambiere la clase html2pdf por la clase
TCPDF, usar Smarty para crear plantillas que me generen el html que convertiré en pdf, ademas estube leyendo por hay sobre la clase phplinq que esta basada en Linq de microsoft que me permitiría hacer consultas sobre un objeto es decir que podría hacer consultas sobre objetos o array asociativos, que en mi parecer me optimizaría las consultas sql ya que solo haría un solo query para obtener todos los datos de la base de datos y operar con ello en un objeto en ves de hacer múltiples querys.

Resumiendo necesitaría que me ayudaran o aclararan estos puntos:
  • 1. optimizar la cantidad de querys o accesos a la base de datos (que me sugieren para optimizar esto sabiendo que debo hacer muchos querys para optener muchos datos distintos para cada boletín)
  • 2. nose me parece que la librería html2pdf es muy lenta para generar pdf creo que TCPDF es mas rápida aun no he probado pero incluso html2pdf la usa y leyendo en su documentacion veo que esta TCPDF tambien convierte en pdf (Que libreria me recomendan para esta accion y si es posible que me permita comprimir el resultado y sobre todo que use poca memoria del servidor)
  • 3. Es mejor para este tipo de re porque que cree clases objetos o interface para crear este reporte que es grande y complejo y grandes en peso.
  • 4. es recomendable usar smarty para generar plantillas de el boletin es mas rapido que escribir el html con echos o con asignandolos a variables ejemplo $mihtml.="<table><tr><td>Boletin.....etc...";
    $mihtml.="<tr><td>mas html.....etc...";
  • 5. es recomendable generar el pdf al vuelo o como archivo en el servidor para comprimirlo pero mas que comprimirlo me preocupa es el consumo de memoria del servidor y el procesador del mismo


Estas son las inquietudes que tengo para abordar y re-estructurar este reporte que insisto es muy grande y que debe estar en un solo pdf.

Gracias de antemano y cualquier recomendación o aclaración o método que me sirva para optimizar y sobre todo consumir menos memoria, procesador y reducir mucho pero mucho el tiempo de generación es bienvenida:aplauso:

Etiquetas: ayuda-php, html2pdf, mysql, pdf, poo, query, reporte, smarty, tcpdf
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 23:41.