Назад | Перейти на главную страницу

Как установить таймаут в mod_perl?

Я ищу общесерверную настройку тайм-аута со сценариями 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 Похоже, это единственный выход.