/ / ¿Cómo puedo aumentar el tiempo de espera de la puerta de enlace para un script PERL? - perl, cgi-bin

¿Cómo puedo aumentar el tiempo de espera de la puerta de enlace para una secuencia de comandos PERL? - perl, cgi-bin

Tengo un script PERL en cgi-bin y se entrega a través de Apache que crea un archivo PDF a partir de un conjunto de archivos XML. Larga historia corta ... lleva un poco de tiempo y mi navegador informa un 504 Gateway Time-out error antes de que se complete.

No quiero aumentar el tiempo de espera predeterminado enmi configuración de Apache, pero quiero aumentar el tiempo de espera por el bien de este script, al que solo pueden acceder los administradores que estén autenticados correctamente.

¿Hay algún comando que pueda agregar al script PERL cgi que aumentará el tiempo de espera?

En PHP hay los comandos set_time_limit($n) y ini_set("max_execution_time", $n); Estoy buscando el equivalente PERL si hay uno.

Respuestas

4 para la respuesta № 1

No es "Perl" el tiempo de espera, es su servidor HTTP (por ejemplo, Apache).

La sabiduría convencional actual es que a largo plazolos trabajos deben estar en cola, procesados ​​por trabajos de trabajo (que no viven dentro de la lógica de la aplicación web, y luego el cliente vuelve a sondear los resultados en un momento posterior.

La gente usa este modelo para trabajos de ejecución corta, para aumentar el rendimiento de la aplicación web, pero solo tiene tres opciones si su trabajo excede el tiempo de espera del servidor:

  1. Hacer los trabajos más cortos
  2. Use el método de cola + alerta / repoll
  3. Cambiar el tiempo de espera del servidor.

-------------------------------- Ediciones 2014-12-10 ------------ -----------------

Para aumentar el tiempo de espera de la puerta de enlace, en apache 2.4 vea los documentos para mod_reqtimeout


0 para la respuesta № 2
use threads;
sub keepalive_httpd{
$SIG{"KILL"} = sub { threads->exit(); };
$| = 1;
do{
print ".n";
sleep 1;
} while(1);
}

my $thr = threads->create("keepalive_httpd");

do something long...

$thr->kill("KILL")->detach();
print "<BR>n";