2011-10-12 219 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