PHP脚本的运行时间比最大执行时间长很多?
PHP作为Apache模块运行 脚本以:PHP脚本的运行时间比最大执行时间长很多?,php,timeout,execution-time,Php,Timeout,Execution Time,PHP作为Apache模块运行 脚本以:ini\u集('max\u execution\u time',300)开始 它所做的基本上是连接到一个数据库,执行一个大的SELECT查询并循环遍历结果,将结果写入一个文件,并在每次写入后使用explicitflush()回显“result ok” 没有sleep()调用 这是一个“测试”脚本,由我的一位同事编写,用于备份,打算运行几个小时!我想我知道脚本执行的时间限制,并认为他的脚本将在300秒后超时。。。 但它没有 它是从web浏览器调用的。页面保持
ini\u集('max\u execution\u time',300)开始代码>
它所做的基本上是连接到一个数据库,执行一个大的SELECT
查询并循环遍历结果,将结果写入一个文件,并在每次写入后使用explicitflush()回显“result ok”代码>
没有sleep()
调用
这是一个“测试”脚本,由我的一位同事编写,用于备份,打算运行几个小时!我想我知道脚本执行的时间限制,并认为他的脚本将在300秒后超时。。。
但它没有
它是从web浏览器调用的。页面保持打开状态,我们可以看到结果被实时回响
为什么不暂停?
更奇怪的是,其中一个测试发出了一个“超过300秒的最大执行时间”,但这至少在执行2小时后出现
这是怎么回事?max_execution_time和flush()之间有什么需要理解的吗?或者浏览器窗口一直处于打开状态吗?我能想到的唯一可能导致这种情况的原因是PHP是否在安全模式下运行。ini_get('max_execution_time')应该告诉您是否实际设置了它
编辑:在上面看到你的评论
echo ini_get('max_execution_time');//说300
如果报告了300,而你的电脑不在Windows上,@mishu很可能是对的。您的SELECT查询可能需要数小时。正如您在“设置时间限制”功能的手册页上所看到的,您设置的总执行时间仅影响实际脚本。数据库查询或任何其他外部调用所花费的时间不计算在内(如果操作系统不是Windows)。ini_get('max_execution_time')结果如何?echo ini_get('max_execution_time');//说300尝试增加php.ini并重新启动apache我认为你和@GOPalmer是对的,我想我读到了一些地方,数据库查询被考虑到了最大执行时间,但它们没有。我们确实有运行了很长时间的查询。谢谢