【发布时间】:2015-06-18 09:32:07
【问题描述】:
PHP 作为 Apache 模块运行。
脚本以a开头:ini_set('max_execution_time', 300);
它所做的基本上是连接到数据库,执行大型SELECTquery 并循环遍历结果,将它们写入文件并在每次写入后用显式flush(); 回显“结果正常”
没有sleep() 呼叫。
这是一个“测试”脚本,由我的一位同事编写,用于备份目的,旨在运行长达几个小时!我以为我知道脚本执行时间限制,并认为他的脚本会在 300 秒后超时...... 但它没有!
它是从网络浏览器调用的。该页面保持打开状态,我们可以看到实时回显的结果。
为什么不超时? 更奇怪的是,其中一个测试发出了“超过 300 秒的最大执行时间”,但这至少在执行 2 小时后才出现!
这里发生了什么?在 max_execution_time 和 flush() 或保持打开的浏览器窗口之间有什么需要了解的吗?
【问题讨论】:
-
ini_get('max_execution_time') 结果是什么?
-
echo ini_get('max_execution_time'); // 说 300
-
尝试在php.ini中增加&重启apache
标签: php timeout execution-time