PHP-无法在xampp中更改max_execution_time

时间:2012-07-01 18:44:01

标签: php time web-crawler

我已经尝试了一切来改变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

11 个答案:

答案 0 :(得分:4)

尝试关闭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.

答案 1 :(得分:3)

您不应该让您的抓取工具在apache下运行,最好通过cli独立运行它作为Gearman设置的一部分。

这样它就不会占用您的网络服务器,只要您愿意,它就可以运行。您可以找到许多可以使用的Gearman绑定,当然包括PHP。

答案 2 :(得分:1)

使用

set_time_limit(0);

位于脚本顶部

答案 3 :(得分:0)

在WAMP中有三个PHP.ini文件,因此你也可以在xampp中找到3个,所以只需使用find搜索它并将max_execution_time替换为你正在设置的内容。但是你必须保留一些不小的东西,就像你运行的应用程序一样快。

答案 4 :(得分:0)

您也可以尝试在脚本中设置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

答案 5 :(得分:0)

如果您使用的是Windows,那么这是一个CLI运行脚本maybe read this

答案 6 :(得分:0)

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

如果在更改值时它在phpinfo()中正确反映,则表示脚本中有一些代码正在更改此值。在代码中搜索两件事:

  1. 在代码中搜索ini_set()并检查是否有更改max_execution_time
  2. 搜索set_time_limit()
  3. 这些函数可以改变脚本执行的最大时间限制。否则,您应该从可以设置此值的位置检查.htaccess。但这也会影响phpinfo()

答案 7 :(得分:0)

我在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可以读取新设置。

答案 8 :(得分:0)

您正在做的只是将max_execution_time设置为页面内的任何内容。 你无法使用ini_set来改变它。您只能更改memory_limit

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

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

答案 9 :(得分:0)

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

max_execution_time = 0
max_input_time = 0

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

答案 10 :(得分:0)

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