【问题标题】:PHP Max Execution Time: Incorrect Reporting?PHP 最大执行时间:报告不正确?
【发布时间】:2010-12-20 02:54:00
【问题描述】:

PHP 脚本是否有任何理由返回以下致命错误:

Fatal error: Maximum execution time of 60 seconds exceeded in 
H:\xampplite\htdocs\mlm\tera.php on line 1

当我的 PHP ini 设置为“300000”时,我在脚本本身中设置了set_time_limit(300000);。安全模式已关闭。此外,Apache 的超时时间也被设置为“300000”。

为什么 PHP 会返回这个 - 我很高兴听到为什么会发生这种情况!

我使用这个 PHP 脚本主要是通过 SQLCMD 使用 exec 函数运行查询。在 PHP 脚本执行(据说)超过 5 分钟后,我收到此错误。

注意:在回答这个问题时,请假设 毫无疑问我正在使用正确的 PHP.ini 文件等,并且我所声称的是实际发生的情况 .

感谢大家的帮助

附:我以前问过这个问题,但认为另一个问题变得混乱。我已经更具体地说明了这一点,希望我能最终结束这本书。这也是我已经完成的一项测试,我不再使用 AJAX。

更新

相关脚本的第 1 行:

session_start(); 
ini_set("max_execution_time" , 300000); 
error_reporting(0);
ini_set('display_errors', '0');

(我添加了换行符以便于阅读)

【问题讨论】:

    标签: php apache time timeout execution


    【解决方案1】:

    我在 php.net 上找到了this comment。您的脚本是否正在等待可能超过 60 秒的其他地方的输入(例如文件上传)? 60 是max_input_time 的默认时间,它设置 PHP 等待接收文件数据的时间。

    【讨论】:

    • 很好的观察 - 但它会返回 max_execution 警告还是 max_input 警告?
    • 是否将通过 AJAX 传递的变量视为输入?
    • 阅读评论和另一个论坛,它会返回 max_execution 错误!奇怪的!让我设置并测试它。
    • 是的,解决了我的问题。我也需要延长 max_input 时间!非常感谢 keithjgrant。 :)
    【解决方案2】:

    phpinfo 输出实际上是否显示您在相应列中输入的值 (300000) 作为 max_execution_time?有没有不同的本地设置?整个 phpinfo 输出的任何地方都没有“60 秒”,对吧?

    我不得不问,因为同样的事情发生在我身上不止一次。

    那么,我们看到的是否是您从主脚本执行的不同脚本的命令行输出?或者来自不同上下文的 PHP 脚本实际输出的其他方式?

    【讨论】:

      【解决方案3】:

      使用简单的 php_info() 运行页面; call 作为唯一的线路。这将告诉您真正为最大执行时间设置了什么变量。

      【讨论】:

      • 我之前曾被问过这个问题,并且我已经确认了这一点 - 因此我在我的问题中声明将我在问题中所说的一切都视为绝对事实,排除所有合理怀疑。我现在把它加粗了。
      • 只是补充一下 - 我已经为此苦苦挣扎了 2 天,所以我很确定我的事实。 ;)
      • 然后发布 php_info 转储的结果,以便我们可以看到 PHP 分配给它的值...
      • 我不知道你所说的“snarky”是什么意思,但我的目的是让你知道我很肯定我的设置与我设置的一样。
      【解决方案4】:

      执行时间限制适用于php执行时间,不包括等待外部程序或数据库。这可以解释为什么您在超过 5 分钟后达到了 60 秒的限制。

      至于为什么你仍然得到 60 秒的限制,我不知道。听起来您确定您使用的是正确的 php.ini 文件,我会检查任何 .htaccess 文件中的 php 指令并使用 phpinfo() 检查设置。更改配置中的值并在 phpinfo() 中验证它是否已更改。

      同时重新启动您的网络服务器。

      【讨论】:

      • 问题是我已将其设置为“300000” - 如果它返回的致命错误已超过“300000”秒,那么我会非常高兴,因为我可以看到 PHP 以它的方式工作应该是。
      【解决方案5】:

      您是否尝试过将max_execution_time 设置为稍低一些的值,例如 300?还是您真的需要三天半的执行时间? (提示:如果答案是肯定的,PHP 可能不是这项工作的工具)一些快速谷歌搜索没有返回任何结果,但如果 300,000 超过 PHP 或 apache 中的某些硬编码限制,我不会感到惊讶。我运行它高达 500 没有问题,但从来没有超过。

      【讨论】:

      • 您可以通过指定0来设置无限期超时。
      • 我用set_time_limit(0)一次运行了好几个月的脚本。 PHP 对于这类工作当然不理想,但有时它很方便(因为您可以重用应用程序的对象、库等)
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-05-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-12-06
      相关资源
      最近更新 更多