【问题标题】:Increase max execution time for php增加 php 的最大执行时间
【发布时间】:2011-12-06 02:15:45
【问题描述】:

我添加了set_time_limit(0); 函数来增加执行时间,但它最多只能执行 2-3 分钟。

error_reporting(E_ALL);
error_reporting(1);
set_time_limit(0);

我想从一个需要很长时间的网站中搜索链接。

【问题讨论】:

    标签: php .htaccess scripting php-ini


    【解决方案1】:

    尝试设置更长的max_execution_time:

    <IfModule mod_php5.c>
        php_value max_execution_time 300
    </IfModule>
    
    <IfModule mod_php7.c>
        php_value max_execution_time 300
    </IfModule>
    

    【讨论】:

      【解决方案2】:

      在 PHP 7 中使用 mod_php7.c 而不是 mod_php5.c

      例子

      <IfModule mod_php7.c>
         php_value max_execution_time 500
      </IfModule>
      

      【讨论】:

        【解决方案3】:

        这是一个老问题,但如果今天有人发现它,php 很可能会通过 php-fpm 和 mod_fastcgi 运行。在这种情况下,这里没有任何东西可以帮助延长执行时间,因为 Apache 将终止与 30 秒内不输出任何内容的进程的连接。扩展它的唯一方法是在 apache (module/site/vhost) 配置中更改 -idle-timeout。

        FastCgiExternalServer /usr/lib/cgi-bin/php7-fcgi -socket /run/php/php7.0-fpm.sock -idle-timeout 900 -pass-header Authorization
        

        更多详情 - Increase PHP-FPM idle timeout setting

        【讨论】:

          【解决方案4】:

          PHP 文件(例如,my_lengthy_script.php)

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

          .htaccess 文件

          <IfModule mod_php5.c>
          php_value max_execution_time 300
          </IfModule>
          

          更多配置选项

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

          如果是wordpress,在config.php文件中设置,

          define('WP_MEMORY_LIMIT', '128M');
          

          如果是 drupal,sites/default/settings.php

          ini_set('memory_limit', '128M');
          

          如果您使用其他框架,

          ini_set('memory_limit', '128M');
          

          您可以将内存增加到 千兆字节。

          ini_set('memory_limit', '3G'); // 3 Gigabytes
          

          259200 表示:-

          ( 259200/(60x60 minutes) ) / 24 hours ===> 3 Days
          

          More details on my blog

          【讨论】:

          • 搞笑的是,这也适用于 Suhosin“强化”PHP 环境。
          • 这将在我托管我的网站的实时服务器上工作,我已经尝试过但它没有。所以我很困惑,主机提供商可能已将 max_execution_time 设置为 30 秒,这可能就是示例不起作用的原因
          • @SumithHarshan , 请问这个, ini_set('max_execution_time', 300); //300 秒 = 5 分钟,特别适用于脚本(脚本运行期间一次),或者它是否会更改 php.ini 中的默认值(永久)???
          • 好的,知道了,ini_set 设置给定配置选项的值。配置选项将在脚本执行期间保留此新值,并将在脚本结束时恢复。还是谢谢你!
          【解决方案5】:

          在您的 htaccess 文件中添加这些代码行。希望能解决你的问题。

          <IfModule mod_php5.c>
          php_value max_execution_time 259200
          </IfModule>
          

          【讨论】:

          • 259200 是什么意思?秒?
          • 259200/ 60= 4320 分钟 4320/60= 72 小时 72/24= 3 天
          【解决方案6】:

          好吧,由于您在共享服务器上,因此您无能为力。他们通常设置最大执行时间,以便您无法覆盖它。我建议你联系他们。

          【讨论】:

            【解决方案7】:

            嗯,有两种方法可以更改 max_execution_time。
            1.可以直接在php.ini文件中设置。
            2.其次,您可以在代码中添加以下行。

            ini_set('max_execution_time', '100')
            

            【讨论】:

              【解决方案8】:

              您的网络服务器中可能设置了限制。一些浏览器/代理也会实现超时。通过 HTTP 请求调用长时间运行的进程简直是愚蠢的。解决问题的正确方法(假设您不能使处理速度更快)是使用 HTTP 请求在 webserver 会话组之外触发处理,然后通过 HTTP 轮询状态,直到获得结果集。

              【讨论】:

              • 我想知道这个答案是否可以提供一个例子?你的意思是一个不是http请求的进程吗?类似于可执行文件的东西?
              • "类似于可执行文件的东西?" - 没有多大意义。对于这个论坛来说,一个例子太复杂了——一种方法是使用守护进程,另一种方法是创建一个分离的进程(symcbean.blogspot.co.uk/2010/02/…)。我确实环顾四周寻找好的守护进程示例 - 但只发现了很多不好的示例(提示:应该关闭它的 stdio、fork 和 setsid)
              猜你喜欢
              • 1970-01-01
              • 2013-04-05
              • 2013-04-16
              • 1970-01-01
              • 2018-01-02
              • 1970-01-01
              • 1970-01-01
              相关资源
              最近更新 更多