Gå til innhold

mysql sideteller


Anbefalte innlegg

Jeg er ikke sikker på om mysql-telleren min fungerer skikkelig.

 

Tidligere badde jeg en (skjult) teller på hver nettside, for å holde telling på alle sidevisninger. Dette gjorde jeg vha et cgi-script. Dette scriptet inneholdt en feil (fikk beskjed om dette fra web-hotellet). Det virket greit nok, men avsluttet ikke alltid på rett måte, slik at web-hotellet måtte renske en eller annen tabell for uavsluttede prosesser med jevne mellomrom.

 

Jeg lagde derfor min egen teller, og erstattet cgi-telleren ved enkelt å legge til denne linjen på bunnen av hver nettside. (I tillegg til å åpne mysql-databasen, selvfølgelig):

 

mysql_query("UPDATE teller_tabell SET teller=teller + 1");

 

Problemet er at dermed har antall sidevisninger gått kraftig ned. Fra et snitt på ca 3000 sider om dagen, er det nå bare 2000 sidevisninger om dagen.

 

Jeg lurer derfor på om det er noen kjente svakheter i denne måten å telle på? Hvis f.eks. mange forskjellige åpner sider samtidig, kan det være at hvis en bruker holder på med å oppdatere telleren, så klarer ikke en annen å gjøre dette samtidig?

Lenke til kommentar
Videoannonse
Annonse

det skal ikke være noe problemer med det.

i og med du bruker felt = felt +1

disse queriene legges bare i en kø som utføres når databasen har tid. (er som regel med en gang..)

 

Eneste som kan feile hos deg er mysql_connect. Dette hvis du har gått over max antall connections som er definert i databasen. For å løse dette kan du prøve pconnect.

Lenke til kommentar

Takk for svar! Du ledet meg godt på vei, og jeg fikk søkt litt mer på nettet.

 

Når jeg ser på mysql-variablene (show variables;) så står det blant annet:

* max_delayed_threads 20

* max_connections 1000

* max_user_connections 0

Ut fra hva jeg har lest, er 1000 max_connections ganske høyt, så det burde ikke skape problemer (jeg vet ikke hva max_user_connections betyr.)

Men kanskje max_delayed_threads=20 kan skape problemer hvis det er mange sidevisninger på kort tid?

 

Ellers har jeg lest litt om mysql_pconnect kontra mysql_connect etter at du tipset meg. Men jeg forstår det slik at pconnect sørger for at forbindelsen er åpen hele tiden, altså ikke lukker den. Vil ikke dette medføre at det blir enda flere åpne forbindelser?

 

Jeg har også nå funnet ut at det er lurt å gjøre en mysql_close. Denne har jeg aldri brukt før. Det er litt ulik info å finne på nettet. Noen sier at forbindelsen automatisk lukkes når php-scriptet avsluttes. Andre sier at hvis forbindelsen ikke lukkes, så vil den være åpen i et server-bestemt tidsrom, ofte 8 timer. Derfor ble det anbefalt alltid å bruke mysql_close.

 

Jeg har derfor nå gått gjennom alle filene mine og satt inn mysql_close i alle php-script hvor jeg først åpner databasen.

 

Så får jeg se om det vil hjelpe :roll:

Lenke til kommentar

Når jeg bruker koden under, får jeg lest inn telleren i variablen $hits . Jeg kan legge til at teller_tabell er en tabell som kun inneholder ett felt, altså selve teller-tallet. (Jeg vet ikke om dette er den mest ideelle koden, men jeg har tatt utgangspunkt i et eksempel jeg fant.)

$result = mysql_query("select * from teller_tabell");

$array = mysql_fetch_array($result);

$hits = $array[0];

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...