2013-10-22 193 views
0

我有這樣的功能和大部分的時間,當我運行該功能會出現以下錯誤:函數超過最大執行時間

Fatal error: Maximum execution time of 30 seconds exceeded

位置(線)的誤差總是不同。

這是函數:

  function selectAdsY(){ 
       //Put all the ads in the arrays.  

       global $ads; 
       global $adsX; 
       global $adsY; 
       global $Min; 
       global $ImpIfriends; 
       global $ImpLivejasmin; 
       global $ImpExo; 
       global $ImpND; 
       global $ImpAmazon; 

       // Change these 
       $ImpIfriends = 20; 
       $ImpLivejasmin = 10; 
       $ImpExo = 0; 
       $ImpND = 20; 
       $ImpAmazon = 20; 

       $i = 0; 
       //ifriends 
        global $ifriends; 
        global $ifriendsX; 
        global $ifriendsY; 
        $iframeCountFriends = count($ifriends) - 1; 
        $a = rand(0, $iframeCountFriends); 

       $ads[$i] = $ifriends[$a]; 
        $adsX[$i] = $ifriendsX[$a]; 
        $adsY[$i] = $ifriendsY[$a]; 
       if($ImpIfriends != 0){ 
        $Min[$i] = min($ifriendsY); 
       } 

       //livejasmin 
        global $livejasmin; 
        global $livejasminX; 
        global $livejasminY; 
        $iframeCountLivejasmin = count($livejasmin) - 1; 
        $a = rand(0, $iframeCountLivejasmin); 
       $i++; 
       $ads[$i] = $livejasmin[$a]; 
        $adsX[$i] = $livejasminX[$a]; 
        $adsY[$i] = $livejasminY[$a]; 
       if($ImpLivejasmin != 0){ 
        $Min[$i] = min($livejasminY); 
       } 
       //exo 
        global $exo; 
        global $exoX; 
        global $exoY; 
        $iframeCountExo = count($exo) - 1; 
        $a = rand(0, $iframeCountExo); 
       $i++; 
       $ads[$i] = $exo[$a]; 
        $adsX[$i] = $exoX[$a]; 
        $adsY[$i] = $exoY[$a]; 
       if($ImpExo != 0){ 
        $Min[$i] = min($exoY); 
       } 

       //nasty dollars 
        global $ND; 
        global $NDX; 
        global $NDY; 
        $iframeCountND = count($ND) - 1; 
        $a = rand(0, $iframeCountND); 
       $i++; 
       $ads[$i] = $ND[$a]; 
        $adsX[$i] = $NDX[$a]; 
        $adsY[$i] = $NDY[$a]; 
       if($ImpND != 0){ 
        $Min[$i] = min($NDY); 
       } 

       //amazon.com 
        global $amazon; 
        global $amazonX; 
        global $amazonY; 
        $iframeCountAmazon = count($amazon) - 1; 
        $a = rand(0, $iframeCountAmazon); 
       $i++; 
       $ads[$i] = $amazon[$a]; 
        $adsX[$i] = $amazonX[$a]; 
        $adsY[$i] = $amazonY[$a]; 
       if($ImpAmazon != 0){ 
        $Min[$i] = min($amazonY); 
       } 
      } 

我真的不知道該怎麼可能是錯的...

編輯:延長時限是不是在這種情況下的解決方案,這個代碼可以並應始終在幾個毫秒內執行。

+0

所以更改期限結束恰好工作? http://php.net/manual/en/function.set-time-limit.php – PlantTheIdea

+0

有沒有在這個代碼,會導致無限循環的,因爲沒有循環。你需要看看是什麼調用這個函數。 –

+0

看起來你打一個響應緩慢的互聯網服務和/或調用你的函數在一個循環。 – Tarik

回答

0

提高你的PHP腳本

<?php 
set_time_limit(0); 
+0

該代碼應該在幾毫秒內輕鬆執行。這就是研究我的裝備... – user2763309

0

的時間限制,您可能沒有錯誤,但錯誤意味着你達到了默認的max_execution_time。

您可以更新此值。

0

使用此:

ini_set('max_execution_time', 300); //300 seconds = 5 minutes 

給在第二次,不管你whant

或者

set_time_limit(0); //no limit 

0 - 表示沒有限制

例子:

<?php 

set_time_limit(20); 

while ($i<=10) 
{ 
     echo "i=$i "; 
     $i++; 
} 

?> 
0

限制最大的執行時間使用set_time_limit($seconds)。如果將$秒設置爲零,則不會對其施加時間限制。所以,只需在腳本開始處添加set_time_limit(0),腳本將一直工作到結束。但是,如果用戶的瀏覽器因斷開到瀏覽器超時腳本將會停止,所以你需要在腳本的開頭添加ignore_user_abort(true)忽略它並直到腳本