PHP set_time_limit没有效果

我有一个非常痛苦的缓慢的脚本,从MySQL获取大量数据,并创build一个大的报告,它在最后作为应用程序/强制下载服务于用户。

长话短说,在生产服务器上,它在大约30秒(相当一致)之后保持终止,而是反而吐出一个空文件。 在开发服务器上它工作正常,但它需要更长的时间执行 – 大约90秒。 为了“安全”,我将php.ini文件设置为max_execution_time = 2000并在脚本的开始处运行set_time_limit(4000) (数字超过预期的完成时间,但只是确定;))。

什么可能导致我的Web服务器忽略我设置的时间限制,并在30秒后退出?

编辑:我知道的一件事是确定的是,需要8-9秒的MySQL部分才能完成,并且每次都成功地超过了这一点。

也许PHP的safe_mode。

试着做一个

 die(ini_get('max_execution_time')) 

在调用set_time_limit(0);之后读取该值set_time_limit(0); 看看它实际上是否被淹没了。

如果它被覆盖到0,你的脚本仍然死亡,那么原因可能在你的代码中的其他地方