Я ищу общесерверную настройку тайм-аута со сценариями mod_perl под Apache 2.2, аналогично max_execution_time
в php.
Тайм-аут можно сделать с помощью $SIG{ALRM}
но он требует модификации каждого скрипта Perl и несовместим с sleep()
.
Apache имеет TimeOut
директива конфигурации, однако это не влияет на mod_perl. С участием TimeOut 5
, таймаут не возникает для тестового сценария, который спит в течение 10 секунд перед печатью чего-либо.
В Apache2::ServerRec
модуль имеет timeout()
метод, но он просто получает / устанавливает значение Apache TimeOut
переменная, поэтому не влияет и на mod_perl.
Как это сделать? Если это невозможно, как лучше всего использовать тайм-аут в mod_perl?
mod_perl
к сожалению, не может этого сделать. какой делает есть способ реализовать тайм-ауты mod_fcgid
(через Директива FcgidBusyTimeout). Это не потребует каких-либо значительных изменений в вашем скрипте, если только он не использует mod_perl
специфическая функциональность.
Хорошее сравнение между mod_perl
и mod_fcgid
является доступно на StackOverflow, но если вам необходимо реализовать универсальные тайм-ауты, mod_fcgid
Похоже, это единственный выход.