【问题标题】:PHP- cannot change max_execution_time in xamppPHP-无法更改 xampp 中的 max_execution_time
【发布时间】:2012-07-02 08:08:56
【问题描述】:

我已经尝试了所有方法来更改 php 爬虫脚本的 max_execution_time,以便它可以无限运行。

我已将 php.ini 文件设置 max_execution_time 更改为 0100000000 但没有任何变化

我也尝试使用ini_set('max_execution_time', 0);从php脚本本身设置它

所有 php 脚本都会抛出相同的错误 Fatal error: Maximum execution time of 3000 seconds exceeded,我可能会遗漏什么以及如何确保没有最大执行时间限制?

php 脚本

<?php
ini_set('MAX_EXECUTION_TIME', -1);
error_reporting(E_ALL);  // turn on all errors, warnings and notices for easier debugging
//ini_set('max_execution_time', 123456);
ini_set('max_input_time', -1);
ini_set('memory_limit', '512M');
set_time_limit(0);
date_default_timezone_set('Europe/London');

/*code which scrapes websites*/

?>

phpinfo()

max_execution_time  0   0
max_input_time     -1   -1

【问题讨论】:

  • 在 php.ini 上设置不同的 max_execution_time 后是否重新启动了 apache 和 PHP? :)
  • 我认为你应该首先优化你的脚本。 3000 秒对于一个 php 文件来说是很长的时间。否则你应该通过命令行运行你的脚本。
  • 对不起,我在看足球,当 no1 回答时我忘记了。
  • @Stony 很难优化一个 php 爬虫。
  • 是的,你赢了 :D 但是当你做一个 phpinfo();为 max_execution_time 设置了哪个值?并且真的加载了正确的 php.ini 文件吗?还有一个非常常见的错误...在您的 php.ini 文件中搜索第二个条目;)

标签: php time web-crawler


【解决方案1】:

打开 php.ini 记事本文件并搜索或找到 upload_max_filesize = 1000M 并且您应该更改 Post_max_filesize = 1000M 然后重新启动您的 xampp 并刷新本地 phpmyadmin..

【讨论】:

    【解决方案2】:

    您必须在 php.ini 中更改这两个(并通过在 phpinfo(); 输出中查找位置来检查这是否是正确的 php.ini!)

    max_execution_time = 0
    max_input_time = 0
    

    然后检查某些 php 文件是否没有在本地覆盖这些变量。

    【讨论】:

      【解决方案3】:

      您所做的只是将max_execution_time 设置为您页面内的任何内容。 您无法使用 ini_set 更改此设置。您只能更改memory_limit

      see more details here... 来自php官方网站。

      如果您希望更改它们,请在 php.ini 中进行更改。

      【讨论】:

        【解决方案4】:

        我在xampp documentation 中找到了以下内容。也许您正在尝试编辑错误的 php.ini 文件?

        为什么我的 php.ini 中的更改没有效果?

        从 XAMPP 1.7.1 开始,“php.ini”只在目录“\xampp\php”中。直到 XAMPP 1.7.0 位于目录“\xampp\apache\bin”中。

        如果“php.ini”中的更改无效,则 PHP 可能仍在使用另一个。您可以使用 phpinfo() 来验证这一点。转到 URI localhost/xampp/phpinfo.php 并搜索“加载的配置文件”。该值向您显示 PHP 真正使用的“php.ini”。

        信息: 更改“php.ini”后,您必须重新启动 Apache,这样 Apache/PHP 才能读取新设置。

        【讨论】:

        • 我之前检查过 phpinfo() 并且我所做的更改已经设置
        • 好的,我在stackoverflow 上发现了另一个问题,其中提到了 max_input_time。你检查过吗?
        【解决方案5】:

        使用

        set_time_limit(0);
        

        在脚本的顶部

        【讨论】:

          【解决方案6】:

          从临时脚本中检查 phpinfo() 并搜索 max_execution_time。确保它与您设置的值相同。默认应该是 30 秒。尝试将其更改为几个不同的值并重新启动 apache,然后检查 phpinfo() 中的值以确认。

          如果当您更改该值时,它会正确反映在phpinfo() 中,这意味着您的脚本中有一些代码正在更改该值。在您的代码中搜索两件事:

          1. 在您的代码中搜索ini_set() 并检查它是否更改max_execution_time
          2. 搜索set_time_limit()

          这些函数可以改变脚本的最大执行时间限制。否则你应该检查.htaccess 可以从哪里设置这个值。但这也会影响phpinfo()

          【讨论】:

            【解决方案7】:

            如果您在 Windows 上,这是一个 CLI 运行脚本 maybe read this

            【讨论】:

              【解决方案8】:

              您也可以尝试在脚本中设置ignore_user_abort(TRUE);,因为它可能是浏览器超时而不是脚本。

              来自 php.net 手册

              <?php
              // Ignore user aborts and allow the script
              // to run forever
              ignore_user_abort(true);
              set_time_limit(0);
              

              查看这里了解更多信息

              http://www.php.net/manual/en/function.ignore-user-abort.php

              【讨论】:

                【解决方案9】:

                您不应该让您的爬虫在 apache 下运行,最好通过 cli 作为Gearman 设置的一部分单独运行它。

                这样它就不会占用您的网络服务器,并且可以根据需要运行任意时间。您可以找到许多可以使用的 Gearman 绑定,当然包括 PHP。

                【讨论】:

                • 如果一切都不好,我会试一试,现在我将尝试在命令提示符下运行 php 文件,因为它可能是浏览器问题,真正让我抓狂的是应该工作不
                【解决方案10】:

                尝试在php中关闭安全模式,然后试试下面的代码

                if( !ini_get('safe_mode') ){ 
                    set_time_limit(0); //this won't work if safe_mode is enabled.
                }
                

                这应该允许您无限运行脚本。

                在 Apache 中,您可以通过 .htaccess 使用此行更改最大执行时间

                php_value max_execution_time 200
                

                set_time_limit() php manual ref.

                【讨论】:

                • @mk_89 你是否关闭了 php 的安全模式?如果你确实尝试重新安装你的 xampp
                • 我确实把它关掉了,也许我会重新安装它
                • 不幸的是它没有任何影响
                【解决方案11】:

                在 WAMP 中有 3 个 PHP.ini 文件,因此您也可以在 xampp 中找到 3 个文件,因此只需使用 find 搜索它并将 max_execution_time 替换为您设置的内容。但是你必须保持一些小而不是太大,以加快你运行的应用程序。

                【讨论】:

                  猜你喜欢
                  • 1970-01-01
                  • 2019-08-10
                  • 2012-09-21
                  • 2017-08-08
                  • 2013-07-27
                  • 2016-12-05
                  • 2019-03-08
                  • 2014-10-11
                  • 2021-01-27
                  相关资源
                  最近更新 更多