[php] Templates en menu structuur

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • Slagroom
  • Registratie: Juni 2001
  • Laatst online: 05-10-2024
Hallo,

Ik ben bezig met om CMS te bouwen die templates (smarty) ondersteund.

Nu wil ik ook dat de menu's in de site ook zo dynamisch mogelijk zijn. Wanneer ze dus een menu in DHTML willen maken moet dit mogelijk zijn.

Maar bij zo'n menu moet je alle mogelijke opties in dat menu in je html code hebben staan. Wat dus betekend dat je alle menu opties in een array moet (lijkt me het eenvoudigs om aan de template door te geven) zetten en die assign je dan weer aan een template variabele.

Maar wat nou als je een site hebt met > 1000 pagina's van wel 30 niveaus diep (je laad maar 2 of 3 niveaus in je template). Kun je deze dan zonder enorme prestatie verliezen en cpu loads in een array zetten?

Het lijkt me het eenvoudigs om ze allemaal in een array te zetten zodat de gebruiker met zijn template niet wordt beperkt tot het gebruikt van enkele niveaus. Hij moet gewoon alle pagina's die hij aanmaakt kunnen gebruiken in zijn menu.

Is dit verstandig of is er misschien een nettere manier?

Acties:
  • 0 Henk 'm!

  • djluc
  • Registratie: Oktober 2002
  • Laatst online: 14:28
Idee: je kunt alleen tot 2 niveau's diep in je menu weergeven. Als je op een pagina klikt in je menu worden van alle andere menuus nog steeds max 2 menuus weergegeven maar van de aangeklikte meerdere?

Acties:
  • 0 Henk 'm!

  • Slagroom
  • Registratie: Juni 2001
  • Laatst online: 05-10-2024
Dat kan niet wanneer je een DHTML menu maakt. Dan zou je de complete pagina moeten refreshen wat weer ten koste van de snelheid van DHTML gaat...

Acties:
  • 0 Henk 'm!

  • Slagroom
  • Registratie: Juni 2001
  • Laatst online: 05-10-2024
Hoeveel items kunnen er eigenlijk in een (niet multi dimensionale) array? Pascal was het toentertijd 255 als ik mij niet vergis.

Acties:
  • 0 Henk 'm!

  • PrisonerOfPain
  • Registratie: Januari 2003
  • Laatst online: 26-05 17:08
Slagroom schreef op 22 juli 2004 @ 18:44:
Hoeveel items kunnen er eigenlijk in een (niet multi dimensionale) array? Pascal was het toentertijd 255 als ik mij niet vergis.
Iets minder als het maximaal te door PHP te gebruiken geheugen is mij eerste ingeving. In iedergeval veel meer als 255 ;)

[ Voor 1% gewijzigd door PrisonerOfPain op 22-07-2004 19:12 . Reden: Woei, typo.. ]


Acties:
  • 0 Henk 'm!

  • Slagroom
  • Registratie: Juni 2001
  • Laatst online: 05-10-2024
Zou een array met +1000 items een probleem zijn?

Acties:
  • 0 Henk 'm!

  • Grijze Vos
  • Registratie: December 2002
  • Laatst online: 28-02 22:17
het begint wat traag te worden, maar het kan wel hoor.

Op zoek naar een nieuwe collega, .NET webdev, voornamelijk productontwikkeling. DM voor meer info


Acties:
  • 0 Henk 'm!

  • Slagroom
  • Registratie: Juni 2001
  • Laatst online: 05-10-2024
Het probleem is dat dit elke keer weer gebeurd wanneer je een pagina laad. Wat als je 200 á 300 bezoekers op een dag krijgt... of is dat ook niet erg?

Acties:
  • 0 Henk 'm!

  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 20-09 08:50

gorgi_19

Kruimeltjes zijn weer op :9

Slagroom schreef op 22 juli 2004 @ 19:27:
Het probleem is dat dit elke keer weer gebeurd wanneer je een pagina laad. Wat als je 200 á 300 bezoekers op een dag krijgt... of is dat ook niet erg?
Gooi er anders eens een stresstest overheen, zoals MACT. Dan merk je het vanzelf :)

Digitaal onderwijsmateriaal, leermateriaal voor hbo


Acties:
  • 0 Henk 'm!

  • Slagroom
  • Registratie: Juni 2001
  • Laatst online: 05-10-2024
Maar dan moet ik het systeem ontwikkelen en ik wil juist tijd besparen door jullie om jullie ervaringen te vragen. Niet twee keer het wiel uitvinden :p

Acties:
  • 0 Henk 'm!

  • wasco
  • Registratie: April 2003
  • Laatst online: 20-09 12:25

wasco

brightest crayon in the box

misschien moet je het over een andere boeg gooien. Het interpreteren van de arrays etc doen met javascript. Dus je laat php de arrays parsen in een javascript-array. daarnaast maak je bij je backend waar je de menu-arrays beheert zo dat wanneer je save drukt het de arrays dus parsed en statisch de code die het menu verzorgt reeds aanmaakt. elke bezoeker gaat dus dan een statische pagina opvragen ipv dat je server voor elke pagina de gehele structuur opnieuw moet parsen en interpreteren. zal een hoop prestaties schelen

wasco [the brightest crayon in the box]


Acties:
  • 0 Henk 'm!

  • Slagroom
  • Registratie: Juni 2001
  • Laatst online: 05-10-2024
Maar wat nu, ik gebruik templates waarmee alles mogelijk is, ik een totaal andere menu structuur wil gebruiken? Alles zou in principe mogelijk moeten zijn.

Acties:
  • 0 Henk 'm!

  • PrisonerOfPain
  • Registratie: Januari 2003
  • Laatst online: 26-05 17:08
Slagroom schreef op 22 juli 2004 @ 19:20:
Zou een array met +1000 items een probleem zijn?
1.000 moet zeker geen probleem vormen, anders time je het zelf even met een stukje code als,
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
<?php
$array = array();
$aantal = 1000;

for ($i = 0; $i <= $aantal; ++$i)
{
    $array[] = rand (0, 10);
}

foreach ($array as &$v)
{
    $v = rand (12,2390);
}

sort ($array);

function blaat ($v)
{
    return $v * $v * $v;
}

$array = array_map ("blaat", $array);


print_r ($array);
?>

Acties:
  • 0 Henk 'm!

  • Slagroom
  • Registratie: Juni 2001
  • Laatst online: 05-10-2024
Met dit script heb ik gebenched met AB met een aantal van 1000, 10000 en 100000. Dit waren de uitslagen:

1000
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
This is ApacheBench, Version 1.3d <$Revision: 1.1.1.11 $> apache-1.3
Copyright (c) 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Copyright (c) 1998-2002 The Apache Software Foundation, http://www.apache.org/

Benchmarking server.mijnservertje.nl (be patient).....done
Server Software:        Apache/1.3.29                                      
Server Hostname:        server.mijnservertje.nl
Server Port:            80

Document Path:          /projecten/smarty/test1/test.php
Document Length:        23252 bytes

Concurrency Level:      1
Time taken for tests:   0.050 seconds
Complete requests:      1
Failed requests:        0
Broken pipe errors:     0
Total transferred:      23419 bytes
HTML transferred:       23252 bytes
Requests per second:    20.00 [#/sec] (mean)
Time per request:       50.00 [ms] (mean)
Time per request:       50.00 [ms] (mean, across all concurrent requests)
Transfer rate:          468.38 [Kbytes/sec] received


10000
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
This is ApacheBench, Version 1.3d <$Revision: 1.1.1.11 $> apache-1.3
Copyright (c) 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Copyright (c) 1998-2002 The Apache Software Foundation, http://www.apache.org/

Benchmarking server.mijnservertje.nl (be patient).....done
Server Software:        Apache/1.3.29                                      
Server Hostname:        server.mijnservertje.nl
Server Port:            80

Document Path:          /projecten/smarty/test1/test.php
Document Length:        242442 bytes

Concurrency Level:      1
Time taken for tests:   0.463 seconds
Complete requests:      1
Failed requests:        0
Broken pipe errors:     0
Total transferred:      242609 bytes
HTML transferred:       242442 bytes
Requests per second:    2.16 [#/sec] (mean)
Time per request:       463.00 [ms] (mean)
Time per request:       463.00 [ms] (mean, across all concurrent requests)
Transfer rate:          523.99 [Kbytes/sec] received


100000
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
This is ApacheBench, Version 1.3d <$Revision: 1.1.1.11 $> apache-1.3
Copyright (c) 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Copyright (c) 1998-2002 The Apache Software Foundation, http://www.apache.org/

Benchmarking server.mijnservertje.nl (be patient).....done
Server Software:        Apache/1.3.29                                      
Server Hostname:        server.mijnservertje.nl
Server Port:            80

Document Path:          /projecten/smarty/test1/test.php
Document Length:        2524520 bytes

Concurrency Level:      1
Time taken for tests:   4.315 seconds
Complete requests:      1
Failed requests:        0
Broken pipe errors:     0
Total transferred:      2524687 bytes
HTML transferred:       2524520 bytes
Requests per second:    0.23 [#/sec] (mean)
Time per request:       4315.00 [ms] (mean)
Time per request:       4315.00 [ms] (mean, across all concurrent requests)
Transfer rate:          585.10 [Kbytes/sec] received


Pas bij 100.000 begint hij moeite te krijgen. Dit is trouwens op een G5 gedaan. Lijkt me dus geen probleem... wat denken jullie?

Acties:
  • 0 Henk 'm!

  • MisterData
  • Registratie: September 2001
  • Laatst online: 29-08 20:29
Kijk ook eens op http://msdn.microsoft.com :) Daar gebruiken ze namelijk een tree met heel veel pagina's, en als je een item openklikt dan worden de onderliggende items (in Internet Explorer alleen overigens) pas geladen :)

Acties:
  • 0 Henk 'm!

  • Slagroom
  • Registratie: Juni 2001
  • Laatst online: 05-10-2024
en daar zit het hem... Internet Explorer...

Acties:
  • 0 Henk 'm!

  • RwD
  • Registratie: Oktober 2000
  • Niet online

RwD

kloonikoon

MisterData schreef op 23 juli 2004 @ 10:23:
Kijk ook eens op http://msdn.microsoft.com :) Daar gebruiken ze namelijk een tree met heel veel pagina's, en als je een item openklikt dan worden de onderliggende items (in Internet Explorer alleen overigens) pas geladen :)
Hmm, dat is Aurigma's Deeptree.
Beetje aangepast weliswaar, want de downloadbare versie van Aurigma die werkt niet onder Netscape (wel op FireFox)

Acties:
  • 0 Henk 'm!

  • Little Penguin
  • Registratie: September 2000
  • Laatst online: 08-06 20:43
Ik kan je geen concrete code geven, maar ik zou zeggen ga eens kijken op CSS/Edge van Eric Meyer (http://www.meyerweb.com/eric/css/edge/), daar vind je een menu oplossing die puur in CSS geimplementeerd is (http://www.meyerweb.com/eric/css/edge/menus/demo.html). (Wel een moderne browser nodig, niet eentje van de vorige eeuw...)

Nu wil je natuurlijk dat dit ook werkt in Internet Explorer, dat kan - op basis van deze menu's heeft men de menu's voor Netscape DevEdge (http://devegde.netscape.com) gemaakt en die werken met behulp van een beetje JavaScript ook in IE.

Deze oplossing maakt de HTML ook nog eens netter en schoner en op lange termijn dus beter te onderhouden...

Acties:
  • 0 Henk 'm!

  • Slagroom
  • Registratie: Juni 2001
  • Laatst online: 05-10-2024
Dit is een hele mooie optie voor een menu alleen moet het niet uitmaken wat voor menu er gebruikt wordt want ik werk met templates en die moeten zo dynamisch mogelijk zijn.

De hoofdvraag was of het verstandig is om met arrays te werken met meer dan 1000 items. Volgens mij kan het dus wel.

Acties:
  • 0 Henk 'm!

Verwijderd

gorgi_19 schreef op 22 juli 2004 @ 19:28:
[...]

Gooi er anders eens een stresstest overheen, zoals MACT. Dan merk je het vanzelf :)
Wat is MACT precies, kan er namelijk nergens iets over vinden? :/
Pagina: 1