我的网站目前很多(缓慢加载和丢失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))
不应该有用吗?我相信我的问题的原因是执行时间非常长 - 但为什么呢?
答案 0 :(得分:0)
我马上就看到了一些问题:
1:缺少easter_date()
功能。
2:您在$ny
循环中使用$strnaeste
和while
个变量,但只更新了$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;