使用in_array循环来阻塞函数

时间:2015-04-01 08:22:44

标签: php mysql function

我的网站目前很多(缓慢加载和丢失MySQL数据) - 我发现了一个非常奇怪的解释。我的一个功能中的一行就是问题。

该功能如下所示:

function lukkedage($aar) {
$aaret = date("Y", $aar);

$lukkedagearray = array(
date("d-m-Y",easter_date($aaret)),          //Påskedag
date("d-m-Y",easter_date($aaret)-259200),   //Skærtorsdag
date("d-m-Y",easter_date($aaret)-172800),   //Langfredag
date("d-m-Y",easter_date($aaret)+86400),    //2. Påskedag
date("d-m-Y",easter_date($aaret)+2246400),  //Store Bededag
date("d-m-Y",easter_date($aaret)+3369600),  //Kristi himmelfart
date("d-m-Y",easter_date($aaret)+4233600),  //Pinsedag
date("d-m-Y",easter_date($aaret)+4320000),  //2. pinsedag
"24-12-".$aaret,
"25-12-".$aaret,
"26-12-".$aaret,
"27-12-".$aaret,
"28-12-".$aaret,
"29-12-".$aaret,
"30-12-".$aaret,
"31-12-".$aaret,
"01-01-".$aaret
);

return $lukkedagearray;
}


function NaesteArbejdsdag($dato) {
$naeste = date('d-m-Y H:i', strtotime(date("d-m-Y H:i",$dato) .' +1 day'));
$strnaeste = strtotime($naeste);

$ny = $strnaeste;
while(date("l",$ny) == "Sunday" OR date("l",$ny) == "Saturday" 
OR in_array(date("d-m-Y",$strnaeste), lukkedage($strnaeste), true)
){
$ny += 60*60*24;
}

if(date("H",$ny) >= "17" OR date("H",$ny) < "09"){
$ny = strtotime(date("d-m-Y",$ny)."09:00");
}

return date("d-m-Y H:i",$ny);
}

第一个函数是一个包含所有假期的数组,下一个函数是它检查下一个工作日的时间 - 如果明天是星期六或星期日或假日,则跳到第二天。

令我疯狂的部分是:

OR in_array(date("d-m-Y",$strnaeste), lukkedage($strnaeste), true))

不应该有用吗?我相信我的问题的原因是执行时间非常长 - 但为什么呢?

1 个答案:

答案 0 :(得分:0)

我马上就看到了一些问题:

1:缺少easter_date()功能。

2:您在$ny循环中使用$strnaestewhile个变量,但只更新了$ny。使用一个变量。

$ny = $strnaeste;
while(date("l",$ny) == "Sunday" OR 
      date("l",$ny) == "Saturday" OR 
      in_array(date("d-m-Y",$ny), lukkedage($ny), true)) $ny += 60*60*24;