• Publicidad

¿Cómo puedo evitar un timeout?

¿Ya sabes lo que es una referencia? Has progresado, el nível básico es cosa del pasado y ahora estás listo para el siguiente nivel.

¿Cómo puedo evitar un timeout?

Notapor dmartinezmurguia » 2008-01-14 20:44 @905

¡Saludos a todos los perleros!

Tengo una duda. Lo que pasa es que estoy utilizando Perl en un servidor Apache entonces me ocurre un timeout porque una consulta suele tardarse más de 4 minutos y me saca de la aplicación y en la página web me lo despliega.

Mi administrador del servidor no me permite instalar muchos módulos, entonces tengo muy limitado ese recurso... ¿Alguien sabe cómo puedo evitar un timeout y poder prolongar el tiempo de espera sin modificar configuraciones en el servidor Apache?

¡Muchas gracias y saludos a todos!
dmartinezmurguia
Perlero nuevo
Perlero nuevo
 
Mensajes: 12
Registrado: 2007-05-07 12:32 @564

Publicidad

Notapor monoswim » 2008-01-15 07:07 @338

¿4 minutos haciendo una consulta? Me parece muchísimo... mira que yo tengo sistemas que hacen cosas pesadas, pero más de 1 minuto ya me parece excesivo, 4 es una locura...

Lo único que se me ocurre es un servidor dedicado, en donde tengas toda la CPU para tu petición y puedas configurar el Apache a tu gusto... Son muy caros, tal vez un servidor dedicado virtual, pero estos suelen tener poca memoria RAM...

Espero que te sirva.

Saludos
PD: ¿No puedes hacerle una reingeniería a tu consulta para dividirla en varias subconsultas?
MonoSwim
Perl Programming Language
Avatar de Usuario
monoswim
Perlero nuevo
Perlero nuevo
 
Mensajes: 452
Registrado: 2003-11-18 16:13 @717
Ubicación: Buenos Aires

Notapor explorer » 2008-01-15 12:27 @560

Pero... ¿son cuatro minutos para recuperar la información desde la base de datos o es que tarda 4 minutos en obtener la primera respuesta desde la base de datos?

En el primer caso, como vamos a tardar mucho en obtener respuesta, mandamos al usuario una página en la que le informamos de esto y, por medio de un JavaScritp, (Ajax o no), llamamos, de forma periódica, a otro CGI para que nos informe de si ha terminado o no. Eso se puede saber si el proceso anterior todavía no ha terminado o no ha generado la salida. Si ha terminado y tenemos la salida, entonces el segundo CGI lo recoge y sustituye la página de espera. Esto último se puede hacer redirigiendo toda la página a otra en la que se solo se muestra el resultado.

Hay más formas, claro...

Si es el segundo caso, que vamos recibiendo datos durante 4 minutos, y se supone que entre dos de ellos no va a pasar un tiempo superior al timeout. Si es así, podemos crear la página y rellenarla a medida de que obtenemos resultados desde la base de datos (no esperamos a tener todos los datos). Dependerá entonces del cliente web que el usuario esté manejando, para que éste pueda ver los datos a medida de que van llegando.

Monoswim: yo he tenido tiempos de espera de más de media hora. Eso sí, eran tablas de millones de registros, con una consulta SQL muy (pero que muy) complicada. Naturalmente, al usuario se le dice que va a tardar ese tiempo, que se marche a tomar el café, y que el resultado se lo encontrará en el correo electrónico :-)
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14486
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España


Volver a Intermedio

¿Quién está conectado?

Usuarios navegando por este Foro: Google [Bot] y 0 invitados

cron