带in_array循环的Bugging函数


Bugging function with in_array loop

我的网站目前有很多bug(加载缓慢,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:缺少easter_date()函数。

2:在while循环中使用$ny$strnaeste变量,但只更新$ny。使用ONE变量。

$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;