Gå til innhold

MySQL: Statistikk over en websides load...


Anbefalte innlegg

Dårlig emne, men jeg prøver igjen:

 

Jeg har en side der folk kan gå inn og gjøre noe gøyale ting med forms i HTML, som sender det til en php-fil. Jeg har et ønske om at den php-filen som mottar de dataene skal sende noe statistikk over når siden blir brukt, slik at jeg ut fra MySQL kan hente en typisk graf over når på døgnet den er mest brukt.

 

Problemet er at jeg ikke er helt sikker på hvordan jeg skal få det til.

 

Skal jeg hver nye gang php-filen mottar data, sjekke i MySQL om det finnes en rad som heter 2005-02-08-13 (for klokken ett på dagen), hvis ikke, opprette den, hvis den finnes, hente ut antall hits og inkrementere den med én?

 

 

Håper dere forstår forklaringen min.

 

Jeg skal senere bruke gdlib i PHP for å tegne en graf i PNG-formatet.

Lenke til kommentar
Videoannonse
Annonse

Kanskje litt grisete, men enklere: Jeg tror jeg bare ville hatt en post pr hit med timestamp (jeg bruker pgsql, dette funker neppe direkte i mysql, men bør være oversettbart)

create table hits(
 id serial primary key,
 time timestamp default current_timestamp
);

 

Så lager du en query som samler sammen data pr minutt, time eller annen enhet som du vil se på.

 

Ulempe: Flere rader i tabellen

Fordel: Enklere kode, mindre load ved registrering av treff, mulighet til å kjøre finere oppløsning dersom det er ønskelig

 

M.

Lenke til kommentar

lag en tabell som over med

create table hits (
id auto_increment primary key,
time int(25) default 0
);

 

så kjører du

mysql_query("INSERT INTO hits SET time = ".time());

på et passende sted i koden, som vil legge inn tiden for når noe blir gjort i UNIX timestamp. UNIX timestamp er ganske greit å jobbe videre med med f.eks. date();

 

(date kan ta unix timestamp som paramenter, da er det bare å velge ut f.eks. "tid på døgnet", og lage statistikk på det. Jeg har kode for å lage bildegrafer ut i fra timestamp liggende; gi meg en PM om du vil ha koden [legger det ikke ut public]).

Lenke til kommentar
Bruk da heller felttypen TIMESTAMP, og så date funksjonene til myqsl. Unødvendig å formatere det i PHP, og bygge en spørring ut fra det og så få mysql til å søke etter riktige data.

er TIMESTAMP det samme som UNIX Timestamp? *da lærte jeg noe i dag også*

Lenke til kommentar

Nope, mysql TIMESTAMP og UNIX TIMESTAMP er ikke det samme. MySQL TIMESTAMP gir deg datoen formatert slik: '1970-01-01 00:00:00'. Og da bruker man heller date funksjonene til MySQL for å spesifisere et søk. Eventuelt så er de mulig å bruke funksjonen UNIX_TIMESTAMP hvis du må ha feltet sortert til et unix timestamp. Det burde likevel være unødvendig, da det er bedre å bruke dato funksjonene til mysql.

Endret av ????????
Lenke til kommentar

Er ikke overbevist om at å bruke datofunksjonene i mysql er bedre. Kanskje om du bare skal jobbe med det i SQL, men om du skal begynne å jobbe videre med det i PHP er det somregel mye enklere å jobbe med UNIX TIMESTAMP..... (har tulla alt for mye med konvertering av timestamper)

Lenke til kommentar

Hehe... jeg bruke også unix timestamp før jeg lære mysql bedre. Ditt fremste argument er at det er lettere å jobbe videre med i PHP, men det er mest formateringer ol. man eventuelt gjør senere i scriptet, og da er det jo absolutt meningsløst å hente ut data fra mysql, for å så formatere det i php - dette gjør man i spørringen.

 

Glem ikke at SQL er et eget språk med mange muligheter. Hvis du noen gang bygger store script så er det viktig å la SQL serveren gjør det den kan gjøre - da fordeler du arbeidsmengden. Ta en nærmere kikk på funksjonene, det er vel verdt det :)

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...