evtl. kann mir jemand bei einem regelmäßig auftretenden Performanceproblem helfen - immer wieder dauert der Aufurf einer Seite (Unterseite) bis zu 120 Sekunden - zumindest lt. Serverlog.
Als wahrscheinlichsten Kandidaten habe ich die Navigation in Verdacht - hier mein code:
Code: Alles auswählen
<?php
$path = explode("|",$this->getValue("path").$this->getValue("article_id")."|");
$path1 = ((!empty($path[1])) ? $path[1] : '');
$path2 = ((!empty($path[2])) ? $path[2] : '');
$nav_main = '';
$subMenuCount=1;
$subButton="";
$breadcrumb="";
foreach (rex_category::getRootCategories() as $lev1) {
$MaxLenName=15;
$enhance="";
$hidden_ids = array(15,20,21,22,46);
// Home und Footer-Links (AGB Wegbeschreibung Kontakt) sollen nicht in der Navi auftauchen
if ($lev1->isOnline(true) && (!in_array($lev1->getId(), $hidden_ids))) {
// 1st level start
$lev1Size = sizeof($lev1->getChildren());
$twoline="";
$NameLen=strlen(html_entity_decode($lev1->getValue('name')));
if ($NameLen>$MaxLenName){$enhance=" ";$MaxLenName=24;}
if ($lev1->getId() == $path1) {
$breadcrumb.=$lev1->getValue('name');
if ($lev1Size!='0'){
$nav_main .='<div class="select"><a href="javascript:toggle('."'sub".$subMenuCount."'".');" class="select">'.$enhance.htmlspecialchars($lev1->getValue('name')).$enhance.'<span id="sub'.$subMenuCount.'button" data-text="-" class="button">+</span></a>';
}else{
$nav_main .= '<div class="select"><a href="'.$lev1->getUrl().'" class="select">'.$enhance.htmlspecialchars($lev1->getValue('name')).$enhance.'</a>';
}
} else {
if ($twoline!=""){$twoline="class='twoLine'";}
if ($lev1Size!='0'){
$nav_main .='<div '.$twoline.' ><a href="javascript:toggle('."'sub".$subMenuCount."'".');">'.$enhance.htmlspecialchars($lev1->getValue('name')).$enhance.'<span id="sub'.$subMenuCount.'button" data-text="-" class="button">+</span></a>';
}else{
$nav_main .= '<div '.$twoline.'><a href="'.$lev1->getUrl().'">'.$enhance.htmlspecialchars($lev1->getValue('name')).$enhance.'</a>';
}
}
// 1st level start
$lev1Size = sizeof($lev1->getChildren());
if ($lev1Size != "0") {
$nav_main .= '
<ul>';
// START 2nd level categories
foreach ($lev1->getChildren() as $lev2):
if ($lev2->isOnline(true)) {
$twoline="";
if (strlen(html_entity_decode(htmlspecialchars($lev2->getValue('name'))))>$MaxLenName){$twoline="twoLine ";}
if ($lev2->getId() == $path2) {
$breadcrumb.=" - ".$lev2->getValue('name');
$nav_main .= '
<li id="sub'.$subMenuCount.'select" class="'.$twoline.'showMenu select"><a href="'.$lev2->getUrl().'" class="select">'.htmlspecialchars($lev2->getValue('name')).'</a></li>';
} else {
$nav_main .= '
<li id="sub'.$subMenuCount.'" class="'.$twoline.'hideMenu"><a href="'.$lev2->getUrl().'">'.htmlspecialchars($lev2->getValue('name')).'</a></li>';
}
}
endforeach;
// Aktive Stücke als Submenu einhängen
if ($lev1->getId()==16 && sizeof($titel)>0) {
for ($lo=0;$lo<sizeof($dbid);$lo++){
$lev2=$lev1->getChildren()[$lo];
$twoline="";
if (strlen(html_entity_decode($titel[$lo]))>15){$twoline="twoLine ";}
if ($lo+31 == $path2) {
$nav_main .= '
<li id="sub'.$subMenuCount.'select" class="'.$twoline.'showMenu select"><a href="'.$lev2->getUrl().'?id='.$dbid[$lo].'" class="select">'.str_replace("<","<",str_replace(">",">",htmlspecialchars($titel[$lo]))).'</a></li>';
} else {
$nav_main .= '
<li id="sub'.$subMenuCount.'" class="'.$twoline.'hideMenu"><a href="'.$lev2->getUrl().'?id='.$dbid[$lo].'">'.str_replace("<","<",str_replace(">",">",htmlspecialchars($titel[$lo]))).'</a></li>';
}
array_push($link,$lev2->getUrl().'?id='.$dbid[$lo]);
}
}
$nav_main .= '
</ul>';
$subMenuCount++;
}
$nav_main .= '
</div>';
}
}
echo $nav_main;
?>
Hat jemand eine Idee - evtl. mach ich hier was grundsätzliches Falsch?
Bei der Gelegenheit - es ist ein Redaxo 5.6.5 / PHP 7.0.33
Wie läuft das eigentlich mit dem Cache? Wo kann ich prüfen, ob das sauer gecached wird (also in welchem Verzeichnis)?
Danke für die Hilfe schon im voraus!`
Oliwan