PHP 作为 Apache 模块运行。
脚本以:ini_set('max_execution_time', 300);
它的作用基本上是连接到数据库,执行大型SELECT
查询并循环结果,将它们写入文件并在每次使用显式写入后回显“结果正常” >flush();
没有 sleep()
调用。
这是我的同事出于备份目的而制作的“测试”脚本,预计运行长达几个小时!我以为我知道脚本执行时间限制,并认为他的脚本会在 300 秒后超时...... 但事实并非如此!
它是从 Web 浏览器调用的。页面保持打开状态,我们可以看到实时回显的结果。
为什么没有超时? 更奇怪的是,其中一个测试发出了“超过了 300 秒的最大执行时间”,但这至少在执行 2 小时后出现!
这是怎么回事? max_execution_time和flush()之间有什么需要理解的,或者浏览器窗口保持打开状态吗?
最佳答案
正如您在 set_time_limit 函数的手册页上看到的那样,here您设置的总执行时间仅影响实际脚本。数据库查询或任何其他外部调用所花费的时间不计算在内(如果操作系统不是 Windows)。
关于PHP 脚本运行时间比 max_execution_time 长得多?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30911635/