WN

WN (https://www.wn.se/forum/index.php)
-   Serversidans teknologier (https://www.wn.se/forum/forumdisplay.php?f=4)
-   -   Cache av ett mysql-resultat (https://www.wn.se/forum/showthread.php?t=14422)

Henrik Nygren 2006-06-02 20:54

Jag vill spara mysql-resultat i en fil och sedan anropa den för att få fram databasens info. Filen ska innehålla det mysql_query() får ut.
Filen uppdateras varje minut, och fungerar alltså som caching, istället för att varenda besökare ska anropa databasen hela tiden.

Jag har inte riktigt fått till det, med att flytta ut innehållet av en mysql_query() till en textfil.
Innehållet kommer ut som någon sorts resurs, står det i manualen.

Någon som kan förklara närmare hur jag skall gå tillväga?

koala 2006-06-02 21:14

Jag har också funderat i dessa banor. Tyvärr är jag alldeles för oinsatt i datavetenskap ibland. Tänk på att det tar lite tid att läsa från filen, jämfört med att t ex läsa från RAM-minnet. Hade man använt ASP hade man förmodligen kunnat spara resultset som en applikationsvariabel? Något liknande i PHP? Eller är det kanske bättre att mellanlagra i en temporär tabell som ligger i RAM-minnet istället för på disk, eller kan MySQL cacha queries själv?

kullervo 2006-06-02 21:33

Henrik:
I första hand: mysqls inbyggda query cache.
I andra hand: Använd PHPs OB och cache:a hela/delar av sidan istället.
I värsta fall: serialize()

Koala:
OS:et cachar såklart filer i annars oanvänt RAM.

guran 2006-06-03 01:02

För mig känns det lite otydligt vad du är ute efter. Du kan ju spara resultatet i en semikolonavgränsad fil och sedan läsa in den i en array som du sedan går igenom och bygger upp det resultat som ska ingå i den html-sida som du ska skicka iväg till en browser.

För mig känns det dock som om man upprepar samma sak som ett svar från databasen skulle ge. Resursutnyttjandet av databasen blir nog inte speciellt lägre än om man lät frågan köras mot den i stället för att ha resultatet i en fil.

Bättre vore i sådant fall att i en fil lagra den html-kod med datan från databasen och inkludera den i den sida där datan ska visas. I detta fall behöver ju ingen bearbetning av datan ske utan den är redan gjord. Detta ökar säkert prestandan avsevärt. Det var kanske detta du var ute efter.

Henrik Nygren 2006-06-03 09:34

Någon som har länk till en bra ob-guide?
Omöjligt att googla...

zoran 2006-06-03 09:39

Citat:

Originally posted by Henrik Nygren@Jun 2 2006, 20:54
Jag vill spara mysql-resultat i en fil och sedan anropa den för att få fram databasens info. Filen ska innehålla det mysql_query() får ut.
Filen uppdateras varje minut, och fungerar alltså som caching, istället för att varenda besökare ska anropa databasen hela tiden.

Jag har inte riktigt fått till det, med att flytta ut innehållet av en mysql_query() till en textfil.
Innehållet kommer ut som någon sorts resurs, står det i manualen.

Någon som kan förklara närmare hur jag skall gå tillväga?

Hmm, det där verkar ju högst onödigt. Att göra en query och sökning i den är ju SQL-motorn optimerad för. En vanlig filläsning kan knappast vara det. Får du bättre prestanda med att läsa och parsa filen än att göra motsvarande query i SQL, då tycker jag att det låter att din query eller databasdesign är helt uppåt väggarna.

Henrik Nygren 2006-06-03 10:38

problemet är att mitt webbhotell har klagat på alla requests som har gjorts till databasen, och jag måste minska på querys, annars blir jag nerstängd.
Gränsen är 300000 requests/dag...

zoran 2006-06-03 10:48

Citat:

Originally posted by Henrik Nygren@Jun 3 2006, 10:38
problemet är att mitt webbhotell har klagat på alla requests som har gjorts till databasen, och jag måste minska på querys, annars blir jag nerstängd.
Gränsen är 300000 requests/dag...


Byt webbhotell då eller skaffa dedikerad server. Jag tror inte de kommer vara gladare över något som kommer tugga mer kraft i sig.

Henrik Nygren 2006-06-03 11:13

Jag har inte riktigt pengarna just nu...

serialize funkar inte som det ska...

Fortfarande ingen som har en länk till en bra ob-guide?

jahaa 2006-06-03 18:24

Kika PEAR's Cache_Lite om du inte vill skapa en sådan klass själv.

Cache_Lite ska ha ett ob utbyggnad som kommer med som standard om jag kommer ihåg rätt.


Alla tider är GMT +2. Klockan är nu 14:31.

Programvara från: vBulletin® Version 3.8.2
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Svensk översättning av: Anders Pettersson