Mailinglisten-Archive |
-----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