Ver Mensaje Individual
  #1 (permalink)  
Antiguo 01/02/2010, 09:34
zangles
 
Fecha de Ingreso: febrero-2010
Mensajes: 1
Antigüedad: 15 años, 2 meses
Puntos: 0
Ayuda con Paginas Pesadas

Hola a todos, les paso a explicar mi problema: Tengo que generar un reporte en pdf mediante ASP. La empresa tiene un componente para generar los pdfs y funciona perfecto el tema es que el reporte es excesivamente largo por lo que me genera un timeout al intentar hacerlo y por la naturaleza del componente solo se puede mostrar los resultados cuando todo el proceso de creacion del PDF esta hecho, mas especificamente, solo se muestran los resultados cuando se usa la funcion closePDF(objetoPDF)

Las soluciones que he intentado fueron las siguientes:



1. Pagina con un iFrame (donde se mostrara el PDF) y una funcion javaScript que pregunta si el iFrame ya termino de cargar, de no hacerlo, hace una llamada a la misma pagina del reporte (mediante ajax) pero con un parametro para extender el tiempo del timeout de la session.
Problema de esta solucion: se queda dando vueltas en el ciclo while

Código Javascript:
Ver original
  1. function comprobarFin(){
  2.         var hora1 = new Date();
  3.         var hora2 = new Date();
  4.         if ( document.getElementById("iframePDF").contentWindow.document.readyState == 'complete' ) {
  5.         }else{
  6.             while (document.getElementById("iframePDF").contentWindow.document.readyState != 'complete'){
  7.                 hora1 = new Date();
  8.                 if (Math.floor((hora1-hora2)/1000)>=5){
  9.                     ch.bind("printBatch.asp?accion=TIEMPO","callback()");
  10.                     ch.send();
  11.                     hora2 = new Date();
  12.                 }
  13.             }
  14.         }
  15.     }

y el browser que uso (firefox) me dice que el script pudo haberse quedado colgado.

2- He intentado separar el proceso de comprobacion de la pagina donde se mostrara el PDF (tambien llamado mediante ajax) pero el proceso no parece estar funcionando ya que me tira timeout

Código ASP:
Ver original
  1. <&#37;
  2.     Dim fecha1,fecha2
  3.     fecha1 = now()
  4.     fecha2 = now()
  5.     while Session("printbatch") <> "CARGANDO"
  6.         fecha1 = now()
  7.         if DateDiff("s",fecha1,fecha2) => 50 then
  8.             Session.Timeout = Session.Timeout + 1
  9.             fecha2 = now()
  10.         end if
  11.     wend
  12. %>


Alguien tiene alguna sugerencia para poder ayudarme a resolver este problema? la idea no es setear un valor alto del timeout sino que ese valor se vaya adaptando dependiendo de la longitud del reporte

Saludos

Última edición por zangles; 01/02/2010 a las 09:54