【问题标题】:About max execution timeout关于最大执行超时
【发布时间】:2018-08-08 08:08:04
【问题描述】:

我对服务器响应 max execution timeout 有一些疑问。

如果,我调用服务器 API 来运行一些巨大的东西,并且无法在服务器 php.ini max_execution_time 配置中设置的时间限制内完成,服务器中的进程还会继续处理吗? - 如果是这样,它会处理无穷无尽吗? - 如果不是,是立即停止进程还是一一取消循环并完成所有进程。

根据我的经验,当我在本地主机上收到 max execution timeout 时,数据已经在处理中。

所以我不确定这是因为它一直卡在响应直到超时或服务器在抛出 max execution timeout 异常后继续运行。

【问题讨论】:

    标签: php laravel server httpresponse max-execution-timeout


    【解决方案1】:

    抛出异常后不再继续。时间到了就直接剪掉。

    执行超时之前的任何内容。如果不是专门为突出这一点而设计的。

    【讨论】:

      【解决方案2】:

      这真的取决于你的 PHP 代码是什么样的。

      通常代码执行会停止。您可以使用ignore_user_abort() 更改此行为。

      【讨论】:

      • 我检查了我的php.ini,它已被禁用,但最终输出已处理
      【解决方案3】:

      PHP 解释器针对 php.ini 配置运行脚本并检查 max_execution_time = 500 和 max_input_time = 500。

      在 max_execution_time 之后 PHP 不会继续运行脚本。它只是“杀死”脚本。

      还有可能发生什么,脚本启动数据库查询,通常查询将在数据库服务器上运行,直到完成,无论脚本发生什么。此外,您可能会收到来自 Web 服务器的网关超时,对于 Apache,请检查 httpd.conf 并查找设置超时。

      如果您需要运行一个需要时间执行的脚本,比您网站的其余部分要多得多,您应该调用一个网页,服务器上的 PHP,派生一个新进程作为后台执行脚本(PHP 部分这需要很多时间),通过异步状态更新或发送电子邮件通知用户处理结束。您不应该只为一个例外延长所有脚本的 max_execution_time。

      【讨论】:

      • 我检查了我的php.ini,`max_input_time=-1` 和max_execution_time=30,所以脚本在 30 秒后停止?我不知道max_input_time 设置为无限制会有什么影响
      【解决方案4】:

      在达到服务器 php.ini max_executiontime 配置中设置的时间限制后,该进程将不会继续并立即停止,然后 php 会抛出最大执行超时异常。

      如果您想在 php 文件中增加最大执行时间,请点击此处 (How to increase maximum execution time in php)。

      【讨论】:

        猜你喜欢
        • 2016-05-07
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-04-29
        • 2013-04-01
        • 1970-01-01
        相关资源
        最近更新 更多