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

PHP script runs much longer than max_execution_time?

PHP 运行宁作为 Apache 模块。

脚本开头为:ini_set('max_execution_time', 300);

它所做的基本上是连接到数据库,进行大的 SELECT 查询并循环遍历结果,将它们写入文件并在每次使用显式 [= 写入后回显 "result ok" 14=]

没有 sleep() 来电。

这是一个 "test" 脚本,由我的同事制作,用于备份目的,旨在 运行 最多几个小时!我以为我知道脚本执行时间限制并认为他的脚本会在 300 秒后超时...... 但它没有!

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

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

这是怎么回事? max_execution_time 和 flush() 或者浏览器 window 保持打开状态之间有什么需要理解的吗?

我唯一能想到的可能是 PHP 在安全模式下 运行。 ini_get('max_execution_time') 应该告诉你它是否真的被设置了。

编辑:在上方发现您的评论。

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

如果报告了 300,而你没有在 Windows 上,@mishu 可能是正确的。您的 SELECT 查询可能需要几个小时。

正如您在 set_time_limit 函数的手册页上看到的那样,here 您设置的总执行时间仅影响实际脚本。花在数据库查询或任何其他外部调用上的时间不计算在内 (如果 OS 不是 Windows).