PHP脚本的运行时间比max_execution_time长得多?

时间:2015-06-18 09:32:08

标签: php timeout execution-time

PHP作为Apache模块运行。

脚本以:SET @lastValue=0, @lastItem=0;

开头

它的作用基本上是连接数据库,执行大ini_set('max_execution_time', 300);查询并循环结果,将它们写入文件并在每次写入后使用显式SELECT回显“结果正常”

没有flush();来电。

这是一个由我的同事制作的“测试”脚本,用于备份目的,目的是运行几个小时!我以为我知道脚本执行时间限制,并认为他的脚本会在300秒后超时...... 但事实并非如此!

它是从Web浏览器调用的。页面保持打开状态,我们可以看到实时回显的结果。

为什么不超时? 更奇怪的是,其中一项测试发出了“超过300秒的最长执行时间”但这至少在执行2小时后出现了!

这里发生了什么?在max_execution_time和flush()之间有什么需要理解的,或者浏览器窗口是否保持打开状态?

2 个答案:

答案 0 :(得分:8)

正如您在man页面上看到的set_time_limit函数,here您设置的总执行时间仅影响实际脚本。花在数据库查询或任何其他外部调用上的时间不计入(如果操作系统不是Windows)

答案 1 :(得分:0)

我能想到的唯一可能导致这种情况的原因是PHP是否以安全模式运行。 ini_get('max_execution_time')应该告诉你它是否真的被设置了。

编辑:发现上面的评论。

  

echo ini_get('max_execution_time'); //说300

如果报告了300,并且您不在Windows上,则@mishu可能是正确的。您的SELECT查询可能需要数小时。