如何在 mod_perl 中超时?

如何在 mod_perl 中超时?

我正在寻找 Apache 2.2 下使用 mod_perl 脚本的服务器范围超时设置,类似于max_execution_timephp。

超时可以通过$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听起来这是唯一的办法。

相关内容