23. juli 2005 - 09:44Der er
7 kommentarer og 2 løsninger
fil eller database?
Jeg er igang med at lave et større system, som efterhånden er ved at have en del databasekald her og der. For at undgå alle disse kald har jeg lavet nogle filer som bliver læst ind med fopen, fgets... men jeg er kommet i tvivl om det overhovedet er en hurtigere måde, eller om det blot sænker sidens performance. Er der nogen som kender noget til database vs. fil ?
Du kan hvis du strukturerer det fornuftigt (kun en fil, læse med store buffere etc.) opnå bedre performance for readonly data ved at bruge fil fremfor database.
Men du skal ikke kode meget forkert førend databasen performer bedst også ved readonly.
Og snakker vi data som skal modificeres vil databasen både performe bedst og spare dig for en masse kode.
Det er normalt også nemmest administrationsmæssigt kun at have software+database fremfor software+diverse filer+database (backup etc.).
Hvis alle dine potentielle databasekald er af typen:
"SELECT * FROM dinTabel"
Så er det nok hurtigst at hente de tilsvarende data fra en fil. I den forbindelse har du dog det problem at du bagefter skal konverter dem til den datatype di skal bruge i de enkelte tilfælde – tekst, tal, datoer osv.
Hvis du begynder at skulle have bare lidt mere struktur på dine potentielle kald:
"SELECT * FROM dinTabel WHERE tilmeldt>#2005-07-23#" "SELECT * FROM dinTabel WHERE fornavn LIKE 'N%'" "SELECT * FROM dinTabel ORDER BY rand()"
- så begynder databasekald at være en meget alvorlig konkurrent til fladfiler.
tusind tak for svarene. Jeg har lige fundet en anden mulighed, som jeg gerne vil dele med jer og se om i synes om :) Hvis jeg laver koden som generer filerne, til at være en php fil, som echo'er et stykke tekst ud, og så includer dem, ville det ikke være det hurtigste?
Filerne indeholder bannerkoder til tre sæt bannere, som administratoren af siden gerne vil kunne styre selv. Der er en fil til hvert banner.
scriptet skal nu heller ikke skrive til sig selv, men til 3 eksterne filer. I skal ha' mange tak for hjælpen, hvis i smider et svar deler jeg pointene 50/50.
På sites, som virkelig oplever tung trafik, kan man benytte en teknik som lidt ligner det du beskriver – men det er ikke nødvendigvis bundet op på at det lige er PHP det forefår i; Sider, på sitet, som oplever et ekstraordinært stort load, som f.eks. forsiden på sitet, bliver simpelthen genereret på forhånd. Når en besøgene går ind på sitet ser hun derfor den præ-generede side i stedet for at denne genereres hver gang via kald til databasen. Hvor tit forsiden genereres afhænger simpelthen af hvor statisk den er – f.eks. kan en nyhedsside nøjes med at genreres en gang for hver nyhed (som er så stor at den ryger på forsiden).
... og et svar :^)
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.