abonnement Unibet Coolblue Bitvavo
  zondag 28 juni 2009 @ 13:17:14 #101
85919 Likkende_Lassie
Doe eens wat aan je ondertitel
pi_70445152
quote:
Op zondag 28 juni 2009 12:08 schreef Xcalibur het volgende:

[..]

Aan het eind van het laden opslaan lijkt me vele malen makkelijker dan via memcached en een cronjob?
Bovendien heb je je data dan meteen. 1 insertquery kost natuurlijk helemaal geen tijd....
het is idd een feit dat het direct uitvoeren van een query makkerlijker is, maar hoe zit het met de performance? en dus straks de totale load op de server.

het is toch een flinke update/insert/select query, select omdat het systeem de stats eventueel nog moet aanmaken.
  zondag 28 juni 2009 @ 14:10:12 #102
37634 wobbel
Da WoBBeL King
pi_70446401
Ik kwam er net achter dat ik gister 20 regels had getikt omdat ik moe was, maar daar ook gewoon een simpele functie voor bestond
  zondag 28 juni 2009 @ 14:52:37 #103
85919 Likkende_Lassie
Doe eens wat aan je ondertitel
pi_70447420
quote:
Op zondag 28 juni 2009 14:10 schreef wobbel het volgende:
Ik kwam er net achter dat ik gister 20 regels had getikt omdat ik moe was, maar daar ook gewoon een simpele functie voor bestond
altijd leuk , welke functie?
pi_70447483
quote:
Op zondag 28 juni 2009 14:10 schreef wobbel het volgende:
Ik kwam er net achter dat ik gister 20 regels had getikt omdat ik moe was, maar daar ook gewoon een simpele functie voor bestond
En ik kwam er pas achter dat ik de hele json klasse uit m'n framework gewoon kon vervangen door calls naar json_encode en json_decode Hoewel die wel iets minder flexibel zijn..
  zondag 28 juni 2009 @ 15:41:31 #105
37634 wobbel
Da WoBBeL King
pi_70448494
quote:
Op zondag 28 juni 2009 14:52 schreef Likkende_Lassie het volgende:

[..]

altijd leuk , welke functie?
round met . en , voor decimalen en duizenden
  maandag 29 juni 2009 @ 10:44:05 #106
85919 Likkende_Lassie
Doe eens wat aan je ondertitel
pi_70471164
Hoop dat iemand nog kan kijken naar mijn vraag een paar posts hierboven

Ondertussen nog een andere vraag, ik heb een project dat ik in meerdere talen wil hebben.
Nu is het zo dat ik voorheen altijd een functie had (lang()), welke ik als volgt aanriep:

echo lang('Welcome');

Vervolgens werd er een query uitgevoerd om welcome op te halen en welcome in het nederlands te weergeven.

Toch denk ik dat dit beter kan, door bijvoorbeeld bij het laden van de pagina dit allemaal in 1 query op te halen, hoe is jullie idee hierover?
pi_70471299
Ik zet vertalingen nooit in de database, maar in een aparte file.
pi_70471783
quote:
Op zondag 28 juni 2009 13:17 schreef Likkende_Lassie het volgende:

[..]

het is idd een feit dat het direct uitvoeren van een query makkerlijker is, maar hoe zit het met de performance? en dus straks de totale load op de server.

het is toch een flinke update/insert/select query, select omdat het systeem de stats eventueel nog moet aanmaken.
Hoezo moet je de status nog aanmaken? Zijn die voor ieder record verschillend dan?
Als je zorgt dat je alle info al hebt opgehaald in je eerste select voorkom je in ieder geval dat je nog een select moet draaien (als dat kan iig).

En grote insert lijkt me niet zo'n probleem? En als je het eerst memcached, moet je het later alsnog inserten, dat maakt qua load niet uit lijkt me, je doet het alleen op een ander moment (als het misschien juist wel drukker is op je server )
pi_70471981
quote:
Op maandag 29 juni 2009 10:48 schreef Scorpie het volgende:
Ik zet vertalingen nooit in de database, maar in een aparte file.
Hoe onderhoud je die dan? In een CMS ofzo dus, textfile steeds opnieuw schrijven?

Ik gebruik altijd een centrale teksten tabel. Per record staat daarin om wat voor soort tekst het gaat (pagina, nieuwsbericht, etc. - tabelnaam dus), de ID van het betreffende pagina/nieuws-record, de taal en de tekst.

Door middel van een join kan je die vrij eenvoudig ophalen, ook meerdere tekstrecords per pagina (voor de titel, inhoud, etc.) Voordeel is dat je *alle* tekst in 1 tabel hebt staan, en dat dus erg makkelijk te doorzoeken is enzo Een nieuwe taal toevoegen is een kwestie van alle tekstrecords van 1 taal dupliceren naar je nieuwe taal.
pi_70472074
quote:
Op maandag 29 juni 2009 11:11 schreef Xcalibur het volgende:

[..]

Hoe onderhoud je die dan? In een CMS ofzo dus, textfile steeds opnieuw schrijven?
Bij een CMS kan je onderscheid maken he. Je hebt dynamische content die de gebruiker zelf verzorgt (die zet je dan natuurlijk in de database), je hebt systeem meldingen (komen uit een resource file), en generieke meldingen (ook uit de resource file).

Als een gebruiker dan meertaligheid wil, dan moet hij alleen zijn dynamische content (laten) vertalen en die opslaan onder een andere taal.
quote:
Ik gebruik altijd een centrale teksten tabel. Per record staat daarin om wat voor soort tekst het gaat (pagina, nieuwsbericht, etc. - tabelnaam dus), de ID van het betreffende pagina/nieuws-record, de taal en de tekst.
Ja dat is dus specifiek voor de dynamische content, daar maak ik mij niet zo druk om.
quote:
Door middel van een join kan je die vrij eenvoudig ophalen, ook meerdere tekstrecords per pagina (voor de titel, inhoud, etc.) Voordeel is dat je *alle* tekst in 1 tabel hebt staan, en dat dus erg makkelijk te doorzoeken is enzo Een nieuwe taal toevoegen is een kwestie van alle tekstrecords van 1 taal dupliceren naar je nieuwe taal.
Klopt. Maar ik bouw meestal een CMS waarbij ik de labels van de velden e.d vastleg in een file, en niet in de database. Dacht dat je dat bedoelde.
pi_70472428
--

[ Bericht 100% gewijzigd door Flaccid op 29-06-2009 11:49:06 ]
pi_70472539
quote:
Op maandag 29 juni 2009 11:11 schreef Xcalibur het volgende:

[..]

Hoe onderhoud je die dan? In een CMS ofzo dus, textfile steeds opnieuw schrijven?

Ik gebruik altijd een centrale teksten tabel. Per record staat daarin om wat voor soort tekst het gaat (pagina, nieuwsbericht, etc. - tabelnaam dus), de ID van het betreffende pagina/nieuws-record, de taal en de tekst.

Door middel van een join kan je die vrij eenvoudig ophalen, ook meerdere tekstrecords per pagina (voor de titel, inhoud, etc.) Voordeel is dat je *alle* tekst in 1 tabel hebt staan, en dat dus erg makkelijk te doorzoeken is enzo Een nieuwe taal toevoegen is een kwestie van alle tekstrecords van 1 taal dupliceren naar je nieuwe taal.
Wat ik persoonlijk doe is de vertalingen in een XML-file opslaan Met SimpleXML en DOM en whatever kun je vanuit je CMS makkelijk muteren in dat soort bestanden, en de performance is over het algemeen een stuk beter als losse databasequeries. (aangezien ik de XML 1 keer parse en vervolgens het object bewaar. Dan wel zo min mogelijk gebruik maken van xpath queries, dat is redelijk zwaar).
Mijn XML-bestand heeft een indeling als volgt:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
<language>
    <config>
       Hier wat configuratieinstellingen voor de taal, zoals een foutmelding als er een vertaling niet gevonden is
    </config>

    <page name="home">
       <group name="headers">
           <constant name="kop">Welkom!</constant>
       </group>
       <group name="...">[...]</group>
       <constant name="blaat">Een vertaling mag ook buiten een groep staan, maar niet buiten een pagina</constant>
    </page>
    <page name="...">[...]</page>
</language>

Mijn languageklasse kun je vervolgens aanroepen met Language::t('home/headers/kop')

[ Bericht 32% gewijzigd door Intrepidity op 29-06-2009 11:42:21 ]
  maandag 29 juni 2009 @ 12:06:56 #113
58834 Catbert
The evil HR Director.
pi_70473789
quote:
Op maandag 29 juni 2009 11:30 schreef Intrepidity het volgende:
Wat ik persoonlijk doe is de vertalingen in een XML-file opslaan Met SimpleXML en DOM en whatever kun je vanuit je CMS makkelijk muteren in dat soort bestanden, en de performance is over het algemeen een stuk beter als losse databasequeries. (aangezien ik de XML 1 keer parse en vervolgens het object bewaar. Dan wel zo min mogelijk gebruik maken van xpath queries, dat is redelijk zwaar).
Als je het een keer inlaadt en dan in-memory bewaard is het performance verschil tussen DB of flat file natuurlijk niet erg boeiend, maar hou er rekening mee dat in normale gevallen (dus niet dat je info maar een maal nodig hebt) DB requests over het algemeen sneller zijn dan flat files lezen. Zelf vind ik het vanuit een ontwerpstandpunt erg slordig om dergelijke dynamische data op een andere plek op te slaan dan waar de rest van je spul zit. M.i. kies je ervoor 'alles' in een DB te stoppen, of 'alles' via XML files te doen.
"[...] a large number of the teenagers claiming Asperger's are, in fact, merely dicks."
pi_70475343
quote:
Op maandag 29 juni 2009 11:14 schreef Scorpie het volgende:
Klopt. Maar ik bouw meestal een CMS waarbij ik de labels van de velden e.d vastleg in een file, en niet in de database. Dacht dat je dat bedoelde.
Ik had het voornamelijk over dynamische teksten inderdaad

Vaste teksten zet ik hard in de template, met een aparte template map per taal. Vind ik een stuk gemakkelijker werken dan met een los tekstbestand. Zo kan ik tenminste gewoon zien waar een tekst staan enzo. Bovendien kan je dan per taal nog wat wijzigen in de template, om een of andere reden willen mijn klanten dat altijd

Wijzigingen in de template moet je in het slechtste geval een aantal keer doorvoeren, maar als je het goed doet kan het meeste via de CSS
pi_70475417
quote:
Op maandag 29 juni 2009 11:30 schreef Intrepidity het volgende:
aangezien ik de XML 1 keer parse en vervolgens het object bewaar.
Dit begrijp ik niet helemaal. Je laadt de hele XML (met *alle* tekst) 1x per pageload in?
Of stop je het ding in een sessie ofzo?

In het eerste geval lijkt me dat niet zo efficient als je een grote site hebt namelijk
pi_70475473
quote:
Op maandag 29 juni 2009 13:01 schreef Xcalibur het volgende:

[..]

Ik had het voornamelijk over dynamische teksten inderdaad

Vaste teksten zet ik hard in de template, met een aparte template map per taal. Vind ik een stuk gemakkelijker werken dan met een los tekstbestand. Zo kan ik tenminste gewoon zien waar een tekst staan enzo. Bovendien kan je dan per taal nog wat wijzigen in de template, om een of andere reden willen mijn klanten dat altijd

Wijzigingen in de template moet je in het slechtste geval een aantal keer doorvoeren, maar als je het goed doet kan het meeste via de CSS
Nou ja, wat ik altijd vervelend vind is generieke teksten zoals Gebruiker / Login - Loguit enzo te moeten vervangen. Dat doe ik liever op 1 plek dan op meerdere. Maar ja das natuurlijk persoonsgebonden.
pi_70476271
quote:
Op maandag 29 juni 2009 13:03 schreef Xcalibur het volgende:

[..]

Dit begrijp ik niet helemaal. Je laadt de hele XML (met *alle* tekst) 1x per pageload in?
Of stop je het ding in een sessie ofzo?

In het eerste geval lijkt me dat niet zo efficient als je een grote site hebt namelijk
Zo werkt dat nou eenmaal met methoden als SimpleXML. Bij het laden hiervan wordt de hele XML file geparsed en omgezet naar een object. Ik zorg dat dat object statisch blijft in de hele applicatie en dus maar 1 maal geparsed wordt per paginaverzoek. Eventueel kun je dat object zelfs nog cachen als je graag op performance let.
pi_70476317
quote:
Op maandag 29 juni 2009 12:06 schreef Catbert het volgende:

[..]

Als je het een keer inlaadt en dan in-memory bewaard is het performance verschil tussen DB of flat file natuurlijk niet erg boeiend, maar hou er rekening mee dat in normale gevallen (dus niet dat je info maar een maal nodig hebt) DB requests over het algemeen sneller zijn dan flat files lezen. Zelf vind ik het vanuit een ontwerpstandpunt erg slordig om dergelijke dynamische data op een andere plek op te slaan dan waar de rest van je spul zit. M.i. kies je ervoor 'alles' in een DB te stoppen, of 'alles' via XML files te doen.
Ik noem vertalingen van teksten niet dynamisch hoor.. Het gaat hier om teksten die eenmaal ingevoerd worden en hooguit een jaartje later wat geupdate worden. Dynamische data als nieuwsberichten zet ik gewoon in hun eigen tabel, dus titel_nl, titel_en kolommen, etc.
  maandag 29 juni 2009 @ 14:18:36 #119
58834 Catbert
The evil HR Director.
pi_70478107
quote:
Op maandag 29 juni 2009 13:26 schreef Intrepidity het volgende:
Zo werkt dat nou eenmaal met methoden als SimpleXML. Bij het laden hiervan wordt de hele XML file geparsed en omgezet naar een object. Ik zorg dat dat object statisch blijft in de hele applicatie en dus maar 1 maal geparsed wordt per paginaverzoek. Eventueel kun je dat object zelfs nog cachen als je graag op performance let.
Euh, als het 'statisch' over heel de applicatie is, dan wordt het toch sowieso niet eens per pagina ingelezen? Ik snap dat het in PHP wat ingewikkelder is dan in .Net bijvoorbeeld maar dat kan je toch via shared geheugen oplossen?
"[...] a large number of the teenagers claiming Asperger's are, in fact, merely dicks."
pi_70478179
quote:
Op maandag 29 juni 2009 13:04 schreef Scorpie het volgende:

[..]

Nou ja, wat ik altijd vervelend vind is generieke teksten zoals Gebruiker / Login - Loguit enzo te moeten vervangen. Dat doe ik liever op 1 plek dan op meerdere. Maar ja das natuurlijk persoonsgebonden.
Ja, ik heb ook een tijd met een tekstbestand per taal gewerkt, maar dat vond ik toch maar onhandig... vooral omdat je geen goed overzicht hebt waar je nou iets aan het wijzigen bent... En als je 1 tekst als Login wilt vervangen, maar alle andere niet is de kans dat het fout gaat wel aanzienlijk

Maar ja, ieder z'n voorkeur


Verder: die hele XML iedere pageload inladen lijkt me knap inefficient?
pi_70481254
Ik doe gewoon in php bestand met een array per pagina.
pi_70485105
quote:
Op maandag 29 juni 2009 14:18 schreef Catbert het volgende:

[..]

Euh, als het 'statisch' over heel de applicatie is, dan wordt het toch sowieso niet eens per pagina ingelezen? Ik snap dat het in PHP wat ingewikkelder is dan in .Net bijvoorbeeld maar dat kan je toch via shared geheugen oplossen?
Zoals het nu ingericht is (en dat zijn kleine klanten met weinig traffic) wordt die XML eens per request omgezet naar een SimpleXML object in PHP. Misschien bewaart .net dat soort objecten wel netjes voor je door middel van een viewstate of iets dergelijks (weinig verstand van .net), maar in PHP gebeurt dat zeker niet volautomatisch, en aangezien HTTP inherent stateless is is dat volgensmij ook niet eenvoudig toe te passen tenzij je caching technieken als memcache gaat inzetten.. Maar ik geef toe dat dat bij ons bedrijf door het gebrek aan heftige traffic nog geen issue is ook om dat soort optimalisaties toe te passen.. Die 0.001sec extra per request maakt met andere woorden geen drol uit.
pi_70485496
Toch lijkt een simpele database select me een HEEL stuk sneller dan een filesystem lookup + xml parse...
Gaat echt heel erg tegen m'n gevoel in om het zo op te lossen iig
  dinsdag 30 juni 2009 @ 15:12:57 #124
75592 GlowMouse
l'état, c'est moi
pi_70515561
eee7a201261dfdad9fdfe74277d27e68890cf0a220f41425870f2ca26e0521b0
  dinsdag 30 juni 2009 @ 15:30:42 #125
187069 slacker_nl
Sicko pur sang
pi_70516129
quote:
Op dinsdag 30 juni 2009 15:12 schreef GlowMouse het volgende:
http://www.php.net/releases/5_3_0.php

Nu met goto
xkcd ftw: http://nl2.php.net/goto
In theory there is no difference between theory and practice. In practice there is.
abonnement Unibet Coolblue Bitvavo
Forum Opties
Forumhop:
Hop naar:
(afkorting, bv 'KLB')