WN

WN (https://www.wn.se/forum/index.php)
-   Serversidans teknologier (https://www.wn.se/forum/forumdisplay.php?f=4)
-   -   Statistik utifrån egen logg (https://www.wn.se/forum/showthread.php?t=32216)

qson 2008-09-27 13:27

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)

MMC 2008-09-27 13:34

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?

qson 2008-09-27 13:45

Citat:

Edit: men kan du inte bara använda webbserverns loggar?
Tänkte detta, men behöver mer info... Skall dela upp statistiken på user-nivå, samt behöver vilken header som PHP skickat till klienten.

Så här funkar mitt skript idag
Request -> PHP -> hämta header från db -> logga ip, user-agent och header -> skicka header

jayzee 2008-09-27 20:35

Citat:

Originally posted by qson@Sep 27 2008, 13:45
Citat:

Edit: men kan du inte bara använda webbserverns loggar?
Tänkte detta, men behöver mer info... Skall dela upp statistiken på user-nivå, samt behöver vilken header som PHP skickat till klienten.

Så här funkar mitt skript idag
Request -> PHP -> hämta header från db -> logga ip, user-agent och header -> skicka header

Låter som enorm slöseri med databas resurser ifall du frågar mig.

emilv 2008-09-27 22:49

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.


Alla tider är GMT +2. Klockan är nu 11:37.

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