FAQ |
Kalender |
![]() |
#1 | ||
|
|||
Mycket flitig postare
|
Hej!
Bygger en sida där jag lagt in en "access-log" i en databastabell. Vid varje request läggs en ny rad till. Skall nu bygga ett statistikverktyg för att analsera denna logg, men hur skall jag bygga den? Om den skall jobba direkt mot databasen (logg-tabellen), vilket är enklast att koda, blir det nog väldigt tungrott, då den snabbt blir riktigt maffigt stor... Skall jag göra ett cronjob som bygger statistik och lagrar separat, eller hur skall man tänka? Tänkte använda Google Analytics, men det funkar nog inte, eftersom ingen sida skickas till klienten (endast en HTTP-header) |
||
![]() |
![]() |
![]() |
#2 | |||
|
||||
Mycket flitig postare
|
Kör ett cronjobb som aggregerar loggen och tömmer tabellen en gång per valfri tidsenhet som passar dig. Du kan köra flera aggregeringsnivåer också, beroende på vilken volym vi talar om.
Edit: men kan du inte bara använda webbserverns loggar? |
|||
![]() |
![]() |
![]() |
#3 | ||
|
|||
Mycket flitig postare
|
Citat:
Så här funkar mitt skript idag Request -> PHP -> hämta header från db -> logga ip, user-agent och header -> skicka header |
||
![]() |
![]() |
![]() |
#4 | ||
|
|||
Har WN som tidsfördriv
|
Citat:
|
||
![]() |
![]() |
![]() |
#5 | |||
|
||||
Bara ett inlägg till!
|
Att lagra loggrader i databasen skalar enormt dåligt. Vi hade länge problem med ett sådant statistiksystem. Det var riktigt löjligt när de maffigaste maskinerna på Levonline gick åt till statistikgenerering och jouren ändå stördes varje natt på grund av fel i statistiksystemet. Vi kunde stoppa in hur mycket ny hårdvara som helst utan att det blev bättre. Nu har vi gjort om det så att loggraderna skrivs till en fil för varje sajt och därmed behöver vi inte någon databas. Det nya systemet har kört på sedan april utan minsta fel, och det kör många gånger fortare än det tidigare, på en ensam maskin.
Alltså: Skriv loggraderna till filer omedelbart när de kommer in, även om du gör det genom PHP. PHP kommer inte vara en flaskhals, det kräver mycket lite prestanda att skriva en rad i append-läge till en fil. Det finns väl inget som hindrar dig från att skapa en fil för varje användare? Skriv sedan ditt statistiksystem så att det kan arbeta utifrån dessa filer. Det ultimata är om det kan sammanfatta statistiken och sedan radera originalfilen, och sedan bara fylla på sammanfattningen utifrån en ny loggfil vid nästa generering. Detta sparar både diskutrymme och genereringstid. |
|||
![]() |
![]() |
Svara |
|
|