2013-10-22 140 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)忽略它并直到脚本