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