我正在寻找 Apache 2.2 下使用 mod_perl 脚本的服务器范围超时设置,类似于max_execution_time
php。
超时可以通过$SIG{ALRM}
但它需要修改每个 perl 脚本并且与 不兼容sleep()
。
Apache 有一个TimeOut
配置指令,但它对 mod_perl 没有影响。使用TimeOut 5
,在打印任何内容之前休眠 10 秒的测试脚本不会发生超时。
该Apache2::ServerRec
模块有一个timeout()
方法,但它只是获取/设置 Apache 变量的值TimeOut
,因此对 mod_perl 没有影响。
怎么才能做到?如果做不到,mod_perl 中超时的最佳实践是什么?
答案1
mod_perl
不幸的是,没有办法做到这一点。做有一种方法可以实现超时mod_fcgid
(通过FcgidBusyTimeout指令)。这不需要对您的脚本进行任何重大修改,除非它使用mod_perl
特定功能。
mod_perl
和之间的一个很好的比较mod_fcgid
是可在 StackOverflow 上获取,但如果您的要求是实施通用超时,mod_fcgid
听起来这是唯一的办法。