【问题标题】:Fatal error: Maximum execution time of 30 seconds exceeded致命错误:超过 30 秒的最大执行时间
【发布时间】:2011-07-07 02:25:51
【问题描述】:

我正在从在线资源下载 JSON 文件,当它通过循环运行时,我收到此错误:

致命错误:C:\wamp\www\temp\fetch.php 第 24 行的最大执行时间超过 30 秒

【问题讨论】:

  • Maximum execution time of 60 seconds exceeded 的可能副本,这已经是其他三个的副本。提问前请使用搜索功能。
  • "set_time_limit() 函数和配置指令 max_execution_time 仅影响脚本本身的执行时间。任何花费在脚本执行之外的活动上的时间,例如使用 system() 的系统调用,流操作,数据库查询等在确定脚本运行的最长时间时不包括在内。这在 Windows 上不是这样“来自 PHP 文档

标签: php json


【解决方案1】:

您的循环可能是无止境的。如果不是,您可以像这样延长最大执行时间:

ini_set('max_execution_time', '300'); //300 seconds = 5 minutes

set_time_limit(300);

可用于临时延长时间限制。

【讨论】:

  • set_time_limit(300) 可用于临时延长时间限制。
  • 这个设置是只针对那个脚本还是会影响在同一服务器上执行的所有其他脚本?
  • @Rao 是的,这仅适用于那个脚本。要使其适用于所有脚本,您需要在 php.ini 文件中对其进行更改。你也可以做 set_time_limit(0);如果您希望脚本永远运行,或者长时间运行
  • ini_set('max_execution_time', 0); //没有限制
  • @sangam 我会说这是最好的做法,在允许一定数量的额外缓冲区的同时保持这个限制尽可能低。出于安全原因,我不想完全关闭它。应该设置合理。实际上,我将其设置为在中等服务器压力级别下完成最长运行脚本所需的时间的两倍。但它总是可能失败。所以最佳实践也是单独处理耗时脚本的超时问题。
【解决方案2】:

我遇到了同样的问题,并通过更改 php.ini 中参数 max_execution_time 的值来解决它,如下所示:

max_execution_time = 360      ; Maximum execution time of each script, in seconds (I CHANGED THIS VALUE)
max_input_time = 120          ; Maximum amount of time each script may spend parsing request data
;max_input_nesting_level = 64 ; Maximum input variable nesting level
memory_limit = 128M           ; Maximum amount of memory a script may consume (128MB by default)

希望对你有帮助。

【讨论】:

  • 由于某种原因 ini_set 无法正常工作,但这肯定会有所帮助!
  • php.ini 可以在/etc/php5/apache2/php.ini...中找到。我使用的是 ubuntu 13.04...
  • 我在 wamp 上安装 moodle 时遇到了同样的问题,但解决了配置 php.ini 文件
  • 更改php.ini后需要重启apache
  • [php7] - sudo nano /etc/php/7.0/apache2/php.ini
【解决方案3】:

以上所有答案都是正确的,但在某些情况下我使用了一种简单的方法来避免它。

只需将此命令放在脚本的开头即可:

set_time_limit(0);

【讨论】:

  • 这个完全不推荐
  • 关闭时间限制并不能防止无限循环,因此请始终设置(更大的)限制。
  • @IamtheMostStupidPerson 为什么不呢?如果您将其用作本地主机
【解决方案4】:

我在升级到 WordPress 4.0 时遇到了这个问题。 默认情况下,WordPress 将最大执行时间限制为 30 秒。

将以下代码添加到 WordPress 安装 根目录中的 .htaccess 文件中,以覆盖默认设置。

php_value max_execution_time 300  //where 300 = 300 seconds = 5 minutes

【讨论】:

    【解决方案5】:

    编辑php.ini

    找到这一行:

    max_execution_time
    

    将其值更改为 300:

    max_execution_time = 300
    

    300 表示 http 请求的执行时间为 5 分钟。

    【讨论】:

      【解决方案6】:

      您的脚本正在超时。看看set_time_limit() 函数来增加执行时间。或者配置脚本以使其运行得更快:)

      【讨论】:

      • @HarshaMV 他的意思是使用性能配置文件来确定脚本开始运行缓慢的原因,并优化代码以缩短执行时间。这可能有用也可能没用,具体取决于瓶颈是什么(CPU、磁盘 I/O 和网络)。
      【解决方案7】:

      如果以上所有方法都不适合您,则将.htaccess 文件添加到脚本所在的目录并将其放入其中

      <IfModule mod_php5.c>
      php_value post_max_size 200M
      php_value upload_max_filesize 200M
      php_value memory_limit 300M
      php_value max_execution_time 259200
      php_value max_input_time 259200
      php_value session.gc_maxlifetime 1200
      </IfModule>
      

      这是我解决问题的方法,ini_set('max_execution_time', 86400);set_time_limit(86400) 都没有解决我的问题,但是 .htaccess 方法解决了。

      【讨论】:

      • 它适用于我的情况。谢谢你。用 G 代替 M 代表 GB
      • 如果在 php 7 上运行,只需从 mod_php5 更改为 mod_php7
      【解决方案8】:

      我们可以通过 3 种不同的方式解决这个问题。

      1) 使用 php.ini 文件

      2) 使用 .htaccess 文件

      3) 使用 Wp-config.php 文件(用于 Wordpress)

      【讨论】:

      • 展示解决问题的 3 种方法的示例将是最有帮助的。
      【解决方案9】:

      您可以通过在脚本顶部添加以下行将限制设置为零来消除限制:

      <?php ini_set('max_execution_time', '0'); ?>
      

      【讨论】:

        【解决方案10】:

        按照路径/etc/php5(your php version)/apache2/php.ini

        打开它并将max_execution_time 的值设置为所需的值。

        【讨论】:

        • 在某些托管服务提供商上,您可能需要在 /home/[username]/.php/7.0/phprc 上进行设置
        【解决方案11】:

        也许检查您在 php.ini 文件下更改的任何内容。 例如,我将 ";intl.default_locale =" 更改为 ";intl.default_locale = en_utf8" 以启用“国际化扩展(国际)”而不添加"extension=php_intl.dll" 然后发生同样的错误。所以我建议检查类似的错误。

        【讨论】:

          【解决方案12】:

          要扩展您的max_execution_time,您可以使用ini_setset_time_limit

          // Set maximum execution time to 10 seconds this way
          ini_set('max_execution_time', 10);
          // or this way
          set_time_limit(10);
          

          !!但请注意,这两个函数都会重新启动,同时计算脚本已经执行的时间

          sleep(2);
          ini_set('max_execution_time', 5);
          
          register_shutdown_function(function(){
              var_dump(microtime(true) - $_SERVER['REQUEST_TIME_FLOAT']);
          });
          
          for(;;);
          
          //
          // var_dump outputs float(7.1981489658356)
          //
          

          因此,如果您想准确设置脚本可以运行的最长时间,您的命令必须排在第一位。

          这两个函数的区别是

          • set_time_limit 不返回是否成功的信息,但会在出错时发出警告。
          • ini_set 在成功时返回旧值,或在失败时返回 false 而没有任何警告/错误

          【讨论】:

            【解决方案13】:

            您可以使用 WHM 轻松完成。刚到:

            WHM -> 服务配置 -> PHP 配置

            编辑器-> max_execution_time=30

            (默认为 30 将其更改为您想要的任何值)

            【讨论】:

              【解决方案14】:

              通过在 PHP 脚本顶部添加以下行来增加脚本执行时间。

              ini_set('max_execution_time', 120); //120 seconds = 2 minutes
              

              参考来自Increase the PHP Script Execution Time

              【讨论】:

                【解决方案15】:

                我在 WordPress 网站上遇到了同样的问题, 我在 .htaccess 文件中添加了然后对我来说工作正常。

                php_value max_execution_time 6000000
                

                【讨论】:

                  【解决方案16】:

                  我对我的情况进行了一些更改:xampp\phpMyAdmin\libraries\config.default.php

                  我已搜索:$cfg['ExecTimeLimit'] 并更改右侧的值...

                  您可以将右手数值更改为任何更高的数值,例如“5000”。并且有效。

                  【讨论】:

                    猜你喜欢
                    • 2015-03-31
                    • 1970-01-01
                    • 2014-06-26
                    • 2015-11-12
                    • 2012-07-02
                    • 2011-09-24
                    相关资源
                    最近更新 更多