Ik ben bezig met het uitwerken van een dataprotocol voor een statistiekenprogramma, dit programma zal werken met verschillende modules met gegevens die mensen willen uitlezen. Ik wil de data versturen van een server(‘s) naar een viewer via het HTTP protocol (dit lijkt me in dit geval het slimste).
De server opzet:
De server zal via een PHP script de data genereren uit verschillende gegevens, de gebruikte gegevens hangt af van de geïnstalleerde modules. Ik wil dat je door het uploaden van een module extra gegevens kan uitlezen en de resultaten laten zien/versturen naar de viewer.
Ik heb natuurlijk een beetje nagedacht over de data die verstuurd moet worden, dit wil ik per module in een blok hebben, en de waardes die iedere module verstuurd er ook bij. Denk bijvoorbeeld aan INI bestanden.
Dit is natuurlijk maar een van de vele manieren dat je de data kan formatteren. Is dit de meest dynamische manier (zonder extreem veel configuratie en/of server vereisten) om data per module terug te geven naar de viewer? Wat zijn de op of aanmerkingen voor deze methode?
Ik dacht dat ik bij het bovenstaande systeem het beste de volgende mappenstructuur kon maken:
Het bestand index.php zal de map /modules/ uitlezen en alle submappen controleren op werkende modules, is er een werkende module gevonden dan zal hij deze draaien en de resultaten toevoegen aan de data.
De viewer opzet:
Om het geheel mooi om te zetten naar een (makkelijk) leesbaar formaat komt er een script dat de data van de server zal omzetten naar variabelen binnen de layout. Hierdoor kan ik waardes als {MODULENAAM::VARIABLENAAM} laten vervangen door de waardes die van de server afkomen.
Welke functies zouden handig zijn voor het verwerken van de template? Ik dacht dat bijvoorbeeld een IF en een LOOP functie wel makkelijk zouden zijn. De IF functie om er voor te zorgen dat waardes die binnen een template gebruikt worden en niet bestaan * niet zal weergeven. De loop is wel makkelijk voor het geval dat gegevens vaker terugkomen (zie server, subcontent).
* In het geval dat de template bijvoorbeeld een module gebruikt die eigenlijk niet bestaat, of bepaalde waardes van een module leeg zijn
Misschien is het een idee om meerdere IF types te maken, denk hierbij aan de volgende functies:
• IF_MOD
Dit kan je gebruiken om stukken code uit te sluiten van parsing.
• IF_VAR
Variable binnen een module geladen?
Hierdoor heb je wel het probleem dat hij verwacht dat de waarde TEST uit module MODULENAME zal komen, dit kan je dus alleen gebruiken binnen de waarde IF_MOD. Ik heb hier misschien een oplossing voor, misschien is dat wel een goeie.
Hierdoor kan ik de waardes ook buiten de IF_MOD gebruiken.
Is het voor de IF_VAR een goed idee om beide te hanteren? Of kan ik beter gebruik maken van de eerste/laatste? En waarom dan?
• IF: Algemene IF, is mischien handig?
Ik zat te denken aan de volgende mappenstruktuur
De vraag is, zijn er opmerkingen voor dit protocol? Zijn er andere opties of opzetten voor het gehele protocol? Vergeet ik ergens belangrijke dingen in mijn protocol wat tot problemen kan leiden?
De server opzet:
De server zal via een PHP script de data genereren uit verschillende gegevens, de gebruikte gegevens hangt af van de geïnstalleerde modules. Ik wil dat je door het uploaden van een module extra gegevens kan uitlezen en de resultaten laten zien/versturen naar de viewer.
Ik heb natuurlijk een beetje nagedacht over de data die verstuurd moet worden, dit wil ik per module in een blok hebben, en de waardes die iedere module verstuurd er ook bij. Denk bijvoorbeeld aan INI bestanden.
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
| [GENERICINFORMATION] SERVER_TIME=21:37:37 10:09:2004 UPTIME=3 days, 0 hours, 44 minutes and 37 seconds OS=Microsoft Windows 2000 SERVICES=Apache/2.0.50 (Win32) / PHP 4.3.8 [HARDDRIVES] <DRIVE> NAME=Root TARGET=C: S_TOT=40000 S_USE=15000 S_FREE=25000 </DRIVE> <DRIVE> NAME=DATA TARGET=D: S_TOT=50000 S_USE=40000 S_FREE=10000 </DRIVE> |
Dit is natuurlijk maar een van de vele manieren dat je de data kan formatteren. Is dit de meest dynamische manier (zonder extreem veel configuratie en/of server vereisten) om data per module terug te geven naar de viewer? Wat zijn de op of aanmerkingen voor deze methode?
Ik dacht dat ik bij het bovenstaande systeem het beste de volgende mappenstructuur kon maken:
code:
1
2
3
4
5
6
| |- /modules | |- /module_name | |- module.php (de Classen) | |- index.php (Informatie over de module) | |- index.php (Genereert de data) |
Het bestand index.php zal de map /modules/ uitlezen en alle submappen controleren op werkende modules, is er een werkende module gevonden dan zal hij deze draaien en de resultaten toevoegen aan de data.
De viewer opzet:
Om het geheel mooi om te zetten naar een (makkelijk) leesbaar formaat komt er een script dat de data van de server zal omzetten naar variabelen binnen de layout. Hierdoor kan ik waardes als {MODULENAAM::VARIABLENAAM} laten vervangen door de waardes die van de server afkomen.
Welke functies zouden handig zijn voor het verwerken van de template? Ik dacht dat bijvoorbeeld een IF en een LOOP functie wel makkelijk zouden zijn. De IF functie om er voor te zorgen dat waardes die binnen een template gebruikt worden en niet bestaan * niet zal weergeven. De loop is wel makkelijk voor het geval dat gegevens vaker terugkomen (zie server, subcontent).
* In het geval dat de template bijvoorbeeld een module gebruikt die eigenlijk niet bestaat, of bepaalde waardes van een module leeg zijn
Misschien is het een idee om meerdere IF types te maken, denk hierbij aan de volgende functies:
• IF_MOD
Dit kan je gebruiken om stukken code uit te sluiten van parsing.
code:
1
2
3
4
| <table><tr><td>iets</td></tr> {IF_MOD=MODULENAME}<tr><td>module modulename is geladen</td></tr> {/IF_MOD} </table> |
• IF_VAR
Variable binnen een module geladen?
code:
1
2
3
4
5
| <table><tr><td>iets</td></tr> {IF_MOD=MODULENAME}<tr><td>module modulename is geladen {IF_VAR=TEST}<br>variable test is {TEST}{/IF_VAR}</td></tr> {/IF_MOD} </table> |
Hierdoor heb je wel het probleem dat hij verwacht dat de waarde TEST uit module MODULENAME zal komen, dit kan je dus alleen gebruiken binnen de waarde IF_MOD. Ik heb hier misschien een oplossing voor, misschien is dat wel een goeie.
code:
1
2
| Dit is iets de data van een of andere waarde denk ik<br> {IF_VAR=MODULENAME::TEST}de waarde test is gezet op {MODULENAME::TEST}{/IF_VAR} |
Hierdoor kan ik de waardes ook buiten de IF_MOD gebruiken.
Is het voor de IF_VAR een goed idee om beide te hanteren? Of kan ik beter gebruik maken van de eerste/laatste? En waarom dan?
• IF: Algemene IF, is mischien handig?
Ik zat te denken aan de volgende mappenstruktuur
code:
1
2
3
4
5
6
7
8
9
10
| |- /templates | |- /template_name | | |- /images | | |- /css | | | |- template.tpl (the templatefile) | |- template.php (template config file (colors and things)) | |- index.php (generates the html from the template using the server data) |- config.php (contans an array with servers to monitor) |
De vraag is, zijn er opmerkingen voor dit protocol? Zijn er andere opties of opzetten voor het gehele protocol? Vergeet ik ergens belangrijke dingen in mijn protocol wat tot problemen kan leiden?
[ Voor 15% gewijzigd door Verwijderd op 29-09-2004 00:42 ]