2011-10-12 218 views
52

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

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

我想搜索一个网站的链接,这需要很长的石灰。

任何帮助将不胜感激。

非常感谢。

+0

你是一个共享的服务器上? – Mob

+0

是的,我在共享服务器上 – Bajrang

回答

191

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> 

更多配置选项

如果WordPress的,设置这个在config.php文件,

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

如果Drupal的,网站/默认/ 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

+1

有趣的是,这也适用于Suhosin“强化”PHP环境。 –

+0

谢谢大家接受答案并评论! –

+0

这将工作在活的服务器上,我托管我的网站我已经尝试过,但它没有。所以我很迷惑,可能主机提供商已经设置了max_execution_time到30秒可能是多数民众赞成为什么这个例子没有工作 –

0

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

+0

我不知道这个答案是否可以提供一个例子吗?你的意思是一个不是http请求的进程吗?像可执行文件? “ – TARKUS

+0

”类似于可执行文件? - 没有太大意义。一个例子对于这个论坛来说太复杂了 - 一种方法是使用守护进程,另一种方法是创建一个分离的进程(http://symcbean.blogspot.co.uk/2010/02/php-and-long-running- processes.html)。我确实看过好的守护进程的例子 - 但只发现了很多不好的例子(提示:应关闭它的stdio,fork和setsid) – symcbean

9

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

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

259200是什么意思?秒? – Wishnu

+0

259200/60 = 4320分钟 4320/60 = 72小时 72/24 = 3days – PJunior

1

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

ini_set('max_execution_time', '100') 
3

那么,因为你在一个共享服务器上,你不能做任何事情。他们通常设置最大执行时间,以便您不能覆盖它。我建议你与他们联系。

0

这是老问题,但如果有人发现今天有机会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