phpbar.de logo

Mailinglisten-Archive

[php] Navigation Anzeige - kostengünstigere Version?

[php] Navigation Anzeige - kostengünstigere Version?

Botzenhart Stefan info at bevelopment.de
Mon Jul 25 20:57:19 CEST 2005


-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1



Dennis Sterzenbach schrieb:
> Hi,
> 
> Botzenhart Stefan wrote:
> 
>>Meine Frage hier ist, wie kann ich das ressourcenschonender
>>organisieren. Vor allem in Hinsicht auf den angesprochenen Treewalker
>>und den Heap-Cache.
> 
> Ohne Rekursionen ist es natürlich resourcenschonender.
> Deshalb schlage ich Nested Sets vor (s.u.)
> 
> 
>>Gibt es da fertige Funktionen die das erledigen?
>>Muss ich meinen Id/Parent-id Beziehungen auf bestimmte Weise in das
>>Array speichern und wie kann ich solch eine Struktur performant
>>zwischenspeichern?
> 
> Eine Lösung für deine Herausforderung ist möglich über Nested Sets. Die
> sind für Lesezugriff besser geeignet, du kannst das kombinieren mit den
> erforderlichen Berechtigungsprüfungen (z.b. sowas wie INNER JOIN rechte
> ON ... AND rechte.edit=1...) und erhältst über einen simplen COUNT()
> Befehl die Tiefe (Ebene) des jeweiligen Eintrags.
> Wenn man das geschickt genug kombiniert mit Order-Flags, kann man so mit
> einem einzelnen SQL die Gesamtstruktur direkt auslesen ohne zusätzliche
> Rekursion o.ä

Habe ich mir angeschaut. Finde ich für meine Zwecke allerdings zu
aufwändig. Ich denke ich werde nach dem ID->ParentID-Prizip vorgehen,
allerdings habe ich dazu noch ein paar Fragen udn ich hoffe, dass mir
diese beantwortet werden können.

Eine Möglichkeit meine Navigationsstruktur aufzubauen wäre, eine
Funktion zu schreiben, welche rekursiv meine ID->ParentID-Beziehungen
prüft und anhand dessen die Navigation, gekoppelt an die Userrechte,
aufbaut. Allerdings bin ich mir da hinsichtlich der Performanz nicht
sicher, wieviel Benutzer da zur gleichen Zeit arbeiten können.

Eine andere Möglichkeit wäre, alle Informationen in Objekte od. Arrays
zu speichern (1 mysql-Anfrage) und diese dann mit php auszuwerten und
die Navigation dann so aufzubauen. Dafür wären aber einige Schleifen
notwendig.

An dieser Stelle frage ich mich, was im Endeffekt kostengünstiger und
auch schneller ist? Die ganzen Mysql-Anfragen oder die Menge der
Schleifen in PHP?

An dieser Stelle schon mal vielen Dank!

> 
> ID->ParentID dagegen sind sehr aufwändig beim Lesezugriff und deshalb
> für größere Strukturen (z.B. Threadansichten, mehrfach geschachtelte
> Strukturen, Strukturen mit Abhängigkeiten...) und zeitkritische Dinge
> weniger gut geeignet.
> Dafür haben Nested Sets halt den Nachteil des größeren Kostenaufwands
> beim Aufbau der Struktur.
> 
> Es gibt für Menüs ansonsten aber auch Lösungen bei PEAR (HTML_TreeMenu
> oder so ähnlich, glaub ich).
> 

Grüße Stefan

- --
**************************************************
Bevelopment
Botzenhart Stefan
Memmingerstr. 75
89264 Weißenhorn

fon: (+49) 172/6247909
fax: (+49) 89 - 1488 154761
email: info at bevelopment.de
www: http://www.bevelopment.de
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.0 (MingW32)
Comment: GnuPT-Light 0.2 by EQUIPMENTE.DE
Comment: Using GnuPG with Thunderbird - http://enigmail.mozdev.org

iD8DBQFC5TYMX6uTddf5BKoRAh7CAJ9U4YRbJsmkGOi0bDHHCV8Gxmo/tACfSNdi
VNLW2Sg4JxYS6t+mTbOviD8=
=rdV9
-----END PGP SIGNATURE-----

php::bar PHP Wiki   -   Listenarchive