/ / Jak mogę zwiększyć limit czasu bramy dla jednego skryptu PERL? - perl, cgi-bin

Jak mogę zwiększyć limit czasu bramy dla jednego skryptu PERL? - perl, cgi-bin

Mam skrypt PERL w cgi-bin i dostarczany przez apache, który tworzy plik PDF z zestawu plików XML. Krótko mówiąc ... trwa trochę czasu, a moja przeglądarka zgłasza 504 Gateway Time-out błąd przed jego zakończeniem.

Nie chcę zwiększać domyślnego limitu czasumoja konfiguracja apache, ale chcę zwiększyć limit czasu dla tego jednego skryptu, który jest dostępny tylko dla administratorów, którzy są odpowiednio uwierzytelnieni.

Czy istnieje polecenie, które mogę dodać do skryptu PERL cgi, które zwiększy limit czasu?

W PHP są polecenia set_time_limit($n) i ini_set("max_execution_time", $n); Szukam odpowiednika PERL, jeśli taki istnieje.

Odpowiedzi:

4 dla odpowiedzi № 1

To nie jest limit czasu, to twój serwer HTTP (np. Apache).

Obecna konwencjonalna mądrość jest taka długotrwałazadania powinny być umieszczane w kolejce, przetwarzane przez zadania robocze (które nie działają wewnątrz logiki aplikacji WWW, a następnie klient odpytuje w poszukiwaniu wyników w późniejszym czasie).

Ludzie używają tego modelu do krótkich zadań, aby zwiększyć przepustowość aplikacji internetowej, ale naprawdę masz trzy możliwości, jeśli Twoja praca przekracza limit czasu serwera:

  1. Spraw, by praca była krótsza
  2. Użyj metody kolejka + alert / repoll
  3. Zmień limit czasu serwera.

-------------------------------- 2014-12-10 edycji ------------ -----------------

Aby zwiększyć limit czasu bramy, na apache 2.4 patrz dokumenty dla mod_reqtimeout


0 dla odpowiedzi nr 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";