/ / Як я можу збільшити час очікування шлюзу для одного сценарію PERL? - perl, cgi-bin

Як збільшити таймаут шлюзу для одного скрипту PERL? - perl, cgi-bin

У мене є скрипт PERL у cgi-bin, який доставляється через apache, який створює файл PDF із набору файлів XML. Коротше кажучи ... це займає трохи часу, і мій браузер повідомляє про 504 Gateway Time-out помилка до її завершення.

Я не хочу збільшувати час очікування за замовчуванням умою конфігурацію apache, але я хочу збільшити час очікування заради цього одного сценарію, який доступний лише адміністраторам, які належним чином автентифіковані.

Чи є команда, яку я можу додати до скрипта PERL cgi, яка збільшить час очікування?

У PHP є команди set_time_limit($n) і ini_set("max_execution_time", $n); Я шукаю еквівалент PERL, якщо він є.

Відповіді:

4 для відповіді № 1

Це не тайм-аут Perl, це ваш HTTP-сервер (наприклад, Apache).

Сучасна загальноприйнята думка полягає в тому, що вона тривалазавдання повинні бути в черзі, оброблятися робочими робочими місцями (які не перебувають усередині логіки веб-додатків, а потім клієнт повторно опитує результати пізніше.

Люди використовують цю модель для короткочасних завдань, щоб збільшити пропускну здатність веб-додатків, але у вас є лише три варіанти, якщо ваша робота перевищує час очікування сервера:

  1. Зробіть роботу коротшою
  2. Використовуйте метод черги + попередження / повторного опитування
  3. Змініть час очікування сервера.

-------------------------------- 10.12.2014 редагування ------------ -----------------

Щоб збільшити час очікування шлюзу, на apache 2.4 див. Документи для mod_reqtimeout


0 для відповіді № 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";