Soderle, nun muß ich doch auch noch einmal was dazu sagen. Ich denke nicht das nested sets das Problem alleine lösen werden, sie werden es für eine gewisse Zeit kaschieren, denn es liegt meiner Meinung nach nicht primär am Umgang mit den Kategorien. Es liegt noch an weit mehr warum connects und queries das Ganze verlangsamen.
Und auch daher ist eine Integration von nested sets nicht mal schnell in einer Minute gemacht, sondern das wäre nur sinnvoll, wenn dabei auch die anderen Baustellen im Kategoriebereich gleich mit abgearbeitet werden.
Um das mal zu konkretisieren habe ich mich die letzten Tage mal ein paar Stunden damit beschäftigt den Ablauf in der includes.str_overview.php aufzudröseln. Mal ganz davon abgesehen, das ich dabei noch über ein paar Bugs gestolpert bin, die ich, wenn geprüft, im Bereich Bugs einstellen werde, habe ich auch ein paar Versuche zur Auslastung, gerade der DB-Anbindung, gefahren.
Vorraussetzung:
Contenido 4.8.12
PHP 5.x
MySQL 5
das Ganze auf nem lokalen Linuxserver
Demomandant mit 1 zusätzlichen Kategorie (=35 Kat)
1. Durchlauf (ohne Änderungen)
Building this page (excluding contenido includes) took: 1.2401649951935 seconds
Building the complete page took: 2.5811569690704 seconds
Include memory usage: 1.75 MB
Complete memory usage: 8.44 MB
Amount of DB connects: 102
Amount of DB selects: 102
Amount of DB queries: 388
2. Durchlauf
Hier wurde nur im Plugin workflow die CEC-Anbindung zum Kategoriebereich in der config.plugin.php auskommentiert
Code: Alles auswählen
$_cecRegistry->addChainFunction("Contenido.CategoryList.Columns", "piworkflowCategoryColumns");
$_cecRegistry->addChainFunction("Contenido.CategoryList.RenderColumn", "piworkflowCategoryRenderColumn");
Das Ergebnis sieht dann so aus
Building this page (excluding contenido includes) took: 1.0823950767517 seconds
Building the complete page took: 2.4627871513367 seconds
Include memory usage: 1.64 MB
Complete memory usage: 8.33 MB
Amount of DB connects: 30
Amount of DB selects: 30
Amount of DB queries: 320
Für
jede Kat werden min. 2 Queries abgesetzt. Und so geht es in weiteren Bereichen weiter und die Queries summieren sich.
Auch kommt es durch den klassischen All-In-One Aufbau der Datei zu Abfragen, die man einmal zentral mit einem Query in ein Array machen könnte und Anfragen dazu im weiteren Verlauf daraus bedienen sollte.
Zusammenfassend denke ich, man sollte den gesamten Bereich wirklich mal "Neu" machen, und wenn dabei nested sets mit integriert werden fände ich das auch klasse. Man muss sich aber auch um Pagination Gedanken machen, da egal wie man es löst, irgendwann auch die Resourcen (Speicher, Zeit) erschöpft sind.
Ich werde nun trotzdem erst mal an den vorhandenen Dateien arbeiten, da eine andere Lösung IMO nicht von jetzt auf gleich zu erstellen ist.
Gruß aus Franken
Ortwin