| [PHP] Gnezdenje | ||
|---|---|---|
|
thai
20. jun 2015 10:01:01
Pridružen od: 14. dec 2014 81 objav 32 31 2 |
#11
Si si pogleda meni na tej strani ? http://cult-trgovina.si/si/ Ne pride tu v poštev ajax, keširanje pa lahko uredim šele potem, ko je meni že zgeneriran. *Uporabniku je bila prepovedana uporaba foruma zaradi večih uporabniških računov, ki so po [pravilih obnašanja](/pravila.html) prepovedani.*
|
|
|
theuros
20. jun 2015 10:13:49
Pridružen od: 22. jun 2009 197 objav 120 22 1 |
#12
ah... ja če povečaš xdebug.maxnestinglevel bi ti pomagalo, vendar ti priporočam da spremeniš logiko da ne bo potrebne toliko rekurzije, saj ne vidim razloga zakaj bi moral imeti vso strukturo na voljo. Strukturo zlagaj postopoma, da ne presežeš limita oz. še bolje naloži samo vidne kategorije, vse ostale pa naložiš šele ko uporabnik klikne na njih. Če je nekdo profesionalec še ne pomeni da obvlada tisto kar ponuja ampak samo, da služi z svojim delom.
|
|
|
pavarti
20. jun 2015 11:18:50
Pridružen od: 26. okt 2011 445 objav 587 92 14 |
#13
Obremenjuješ se nepotrebnimi stvarmi. Tako boš imel podatke v memoriju, branje in rekurzija bo hitra in malo potratna. V kolikor ti je to še vedno potratno lahko keširaš tudi html izpis menija za naprimer prvi in drugi nivo. Obstaja še mnogo načinov za optimizacijo, ampak načelo mora biti, da se optimizira takrat ko je to potrebno. |
|
|
bostjan
20. jun 2015 11:21:19
Pridružen od: 31. jul 2008 643 objav 689 30 9 |
#14
poglej si še nested tree set (https://en.wikipedia.org/wiki/Nestedsetmodel), zna olajšat select querye
|
|
|
carli
20. jun 2015 11:40:17
Pridružen od: 5. avg 2008 1258 objav 583 54 17 |
#15
Preberi vse zapise in poženi skozi zanko sortiranje v array, je tudi kar nekaj primerov po netu. Vse skupaj lažje za keširat in v bistvu imaš samo en klic na bazo :D |
|
|
thai
24. jun 2015 14:32:21
Pridružen od: 14. dec 2014 81 objav 32 31 2 |
#16
Zanimivo. carli: saj točno tako imam sedaj *Uporabniku je bila prepovedana uporaba foruma zaradi večih uporabniških računov, ki so po [pravilih obnašanja](/pravila.html) prepovedani.*
|
|
|
carli
24. jun 2015 18:25:53
Pridružen od: 5. avg 2008 1258 objav 583 54 17 |
||
|
thai
25. jun 2015 09:39:11
Pridružen od: 14. dec 2014 81 objav 32 31 2 |
#18
Ne vem, če se midva razumeva. Lahko potem pokažeš, kako bi rešil spodnji primer brez uporabe recursive? V bazi ima vsaka kategorija id ter parent_id, gnezdi se lahko, jasno, neomejeno globoko.
*Uporabniku je bila prepovedana uporaba foruma zaradi večih uporabniških računov, ki so po [pravilih obnašanja](/pravila.html) prepovedani.*
|
|
|
carli
25. jun 2015 12:06:34
Pridružen od: 5. avg 2008 1258 objav 583 54 17 |
#19
Išči iterating over trees ali pa RecursiveIteratorIterator ... za display, ko imaš že enkrat sortiran array iz baze, pa seveda potem skeširaj output, ker zna biti počasnejši pri večjih arrayih. Večkrat je zadeva uporabna pri prikazu folderjev, itd... |
|
|
DSmidge
26. jun 2015 07:59:00
Pridružen od: 29. maj 2015 8 objav 8 0 0 |
#20
En način je, da celoten meni sestaviš že na bazi. To bi bilo v primeru, da bi imel v tabeli en kup zapisov, aktualni bi pa bili samo nekateri: Drugi način, ki je verjetno bolj primeren zate, je pa da uporabiš kakšen bolj ali manj učinkovit (= enostavnejši) algoritem za sestavljanje drevesa - kot so ti že predlagali. Čisto enostavni način, ki je hkrati zelo neučinkovit, ko imaš veliko podatkov, je da uporabiš dve FOR zanki. Z vsako od njih se sprehodiš skozi svoj seznam in na PARENT_ID dodajaš ID zapise. Na koncu še posortiraš polje po 'id_path' ter urediš zamike. Optimizacije so možne: npr. beležiš zapise, ki so že bili dodani in se po njih ne sprehajaš več v naslednjih korakih, idr. |
|
