Ver Mensaje Individual
  #1 (permalink)  
Antiguo 11/07/2008, 10:42
Avatar de quinqui
quinqui
 
Fecha de Ingreso: agosto-2004
Ubicación: Chile!
Mensajes: 776
Antigüedad: 19 años, 8 meses
Puntos: 56
header() no sirve para recargar script?

Holas a todos.

Les cuento: He realizado un script PHP que lee desde una base ciertos datos, los analiza y guarda en un archivo de texto y luego los muestra al usuario como un TXT para descargar.

Ahora bien, como son muchos los datos, yo los voy agregando al archivo de texto por lotes, o sea "paginado": voy recargando el script cada cierta cantidad de datos, con un numero de pagina incrementado en 1, hasta que llegue al tope y muestre el link para descargar.

Como esto lo hice en la web, para ir recargando el script, usé un formulario HTML y Javascript para enviarlo cada vez (de este modo le permito al usuario detener el proceso cuando lo desee).

Hasta ahí todo me va muy bien.

El caso es que tengo una nueva tarea: generar el mismo archivo, pero de manera automatizada, todos los días, y que una vez sea generado, enviarlo vía FTP al cliente. Para automatizar el asunto he usado cronjob.

Como había hecho todo el proceso vía web, he querido probar si podía repetir la mecánica en el servidor, sin valerse de formulario HTML ni de Javascript (con los cuales recibía los valores por POST). En su lugar he usado el arreglo SESSION y para recargar he usado header().

El problema me ha surgido al ejecutar el script después de una determinada cantidad de tiempo.

Como decía, cuando recargaba el script en la web, usaba Javascript. En el caso actual, uso header() .

Si bien me resulta, el proceso se cae al alcanzar las 20 recargas, aproximadamente (también depende del tiempo de sleep() que le dé entre recarga). En promedio el proceso es interrumpido a los 40 segundos, retornándome un archivo de texto con datos incompletos.

Con mi jefe pensamos que sería problema de timeout del servidor o de php, pero al correr el script desde la web, obtenemos distintos resultados O_O:
- Si lo ejecutamos desde Firefox, se cae a las 20 recargas, mostrando mensaje de error.
- Si lo ejecutamos desde IE, no se cae: realiza el proceso completo.
- Si lo ejecutamos en el servidor vía cronjob, pasa lo mismo que con Firefox, aunque claro, sin retornar error (el que seguro está en algún log, pero no lo hemos buscado).

Como sea, mi pregunta es si cuando usamos header() ¿no se supone que estamos recargando la página/script? O sea, cuando uso Javascript, al recargar yo entiendo que estoy iniciando un nuevo hilo, un nuevo proceso. ¿No debería ser igual con header()? Porque por lo que vimos, pareciera que no iniciara un nuevo hilo con cada llamada al header(), sino que lo toma como un solo proceso y por eso salta un timeout o algo así (al ejecutar el script por la web, no se carga la barrita cada vez, sino que la va llenando como si fuera todo un solo hilo...). La verdad no sé por dónde pillar el problema O_o.

Esop. Muchas gracias de antemano, y disculpen lo largo del post ^^
Saludos.
__________________
pipus.... vieeeeeji plomius!!!
*quinqui site*