У мене є скрипт 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).
Сучасна загальноприйнята думка полягає в тому, що вона тривалазавдання повинні бути в черзі, оброблятися робочими робочими місцями (які не перебувають усередині логіки веб-додатків, а потім клієнт повторно опитує результати пізніше.
Люди використовують цю модель для короткочасних завдань, щоб збільшити пропускну здатність веб-додатків, але у вас є лише три варіанти, якщо ваша робота перевищує час очікування сервера:
- Зробіть роботу коротшою
- Використовуйте метод черги + попередження / повторного опитування
- Змініть час очікування сервера.
-------------------------------- 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";