我已经尝试了一切来改变php爬虫脚本的max_execution_time
,以便它可以运行无限的时间。
我已将php.ini文件设置max_execution_time
更改为0
或100000000
但未更改
我也尝试使用ini_set('max_execution_time', 0);
所有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
答案 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
答案 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);
请点击此处了解更多信息
答案 5 :(得分:0)
如果您使用的是Windows,那么这是一个CLI运行脚本maybe read this。
答案 6 :(得分:0)
从临时脚本中检查phpinfo()
并搜索max_execution_time
。确保它具有与您设置的值相同的值。默认值应为30秒。尝试将其更改为几个不同的值并重新启动apache,然后检查phpinfo()
中的值以确认。
如果在更改值时它在phpinfo()
中正确反映,则表示脚本中有一些代码正在更改此值。在代码中搜索两件事:
ini_set()
并检查是否有更改max_execution_time
set_time_limit()
这些函数可以改变脚本执行的最大时间限制。否则,您应该从可以设置此值的位置检查.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 ..