[php+mysql] Efficiënte unieke bezoekersteller *per* pagina

Pagina: 1
Acties:
  • 278 views sinds 30-01-2008
  • Reageer

  • mahi
  • Registratie: Juni 2001
  • Laatst online: 03-10-2025

mahi

God bless GoT

Topicstarter
Ik ben wat aan het knoeien met een bezoekersteller voor m'n content management system. Ik zou graag het aantal unieke bezoekers willen tellen. Niet zomaar van de hele site, maar per nieuwsbericht zodat ik kan zien hoeveel unieke gebruikers een bepaald bericht hebben bekeken.

De vraag is alleen, hoe pak ik dat efficiënt aan?

Een unieke gebruiker herkennen we aan z'n IP. Dus het ip moet sowieso al in de database. Je zou in de tabel waarin de IP adressen opgeslagen worden ook de pagina id kunnen opslaan. Zo kun je met een WHERE eenvoudig kijken of een bezoeker een bepaalde pagina reeds heeft bezocht. In een andere tabel hou je de hits zelf bij, ook per pagina id.

Maar zo groeit de tabel schrikwekkend snel bij een groot aantal bezoekers die vele pagina's bekijken...

Is het dan misschien een goed idee om ook de datum van het bezoek op te slaan zodat ik bv na x aantal dagen de 'oudere' bezoekers uit de table kan gooien. Je kunt wel zeggen dat het dan niet echt meer een unieke gebruikersteller is, maar het werkt wel afdoende genoeg tegen Refresh praktijken.

Ik zag dat tweakers.net ook een views teller heeft per nieuwsbericht. Refreshen heeft geen effect op het aantal views, dus ik veronderstel dat er ook naar unieke gebruikers gekeken wordt. Maar hoe lost tweakers.net, of zou jij dit efficiënt oplossen? Het zou jammer zijn dat de performance van de site gaat lijden omdat er een stom tellertje op komt.

A bus station is where a bus stops. A train station is where a train stops... On my desk I have a workstation.


  • Config
  • Registratie: Januari 2000
  • Laatst online: 06-01-2025
Bespaar je de moeite...schrijf een eigen access log voor Apache en laat daar een goede log analyzer overheen gaan oid. Kijk ff bij phpclasses.org en PEAR

  • EnsconcE
  • Registratie: Oktober 2001
  • Laatst online: 22-05 12:09
wat mij het handigste lijkt is dat je met sessies werkt. het nadeel is dat je geen 100% unieke teller hebt. als je hem 100% uniek wil maken dan heb je een aardige database nodig volgens mij.

  • mahi
  • Registratie: Juni 2001
  • Laatst online: 03-10-2025

mahi

God bless GoT

Topicstarter
Config: Ik heb geen geavanceerde statistieken nodig. Ik wil gewoon een teller per pagina die min of meer de unieke gebruikers weergeeft. Zo kan ik zien welk soort nieuws het meeste lezers aantrekt. Daarnaast wil ik het aantal unieke bezoekers ook weergeven op de site zelf zoals bij tweakers.net.

EnsconcE: Bedankt voor de tip over die sessies. Ik had met de search eerder al tellers met sessies gevonden, maar het was nog niet in me opgekomen om dat toe te passen voor mijn systeem. Ondertussen werkt de teller al naar tevredenheid en blijkbaar zonder enige performance impact :)

A bus station is where a bus stops. A train station is where a train stops... On my desk I have a workstation.


  • flowerp
  • Registratie: September 2003
  • Laatst online: 04-02 02:01
mahi schreef op 07 augustus 2004 @ 15:30:

Een unieke gebruiker herkennen we aan z'n IP.
Helaas is dit niet waar, vanwege het bestaan van proxies. In Nederland bv nltree. Je zult *nooit* met alleen een IP unieke bezoekers kunnen tellen.

It's shocking to find how many people do not believe they can learn, and how many more believe learning to be difficult.


  • djluc
  • Registratie: Oktober 2002
  • Laatst online: 13:32
Je hebt het hier over je nieuwsberichten. Daarvoor zou je gewoon een kolommetje in je nieuws tabel kunnen maken. Maar volgens mij moet je eerst eens wat meer over de opzet van je CMS vertellen. Als je bijvoorbeeld alles in een soort van tree hangt kan het mogelijk zijn om een algemeen teller-systeem te maken.

  • Erkens
  • Registratie: December 2001
  • Niet online

Erkens

Fotograaf

flowerp schreef op 08 augustus 2004 @ 00:45:
[...]


Helaas is dit niet waar, vanwege het bestaan van proxies. In Nederland bv nltree. Je zult *nooit* met alleen een IP unieke bezoekers kunnen tellen.
ehm, maar als hij daaraan zijn bezoekers uniek wilt noemen is dat natuurlijk prima ;)
Zo had ik ook een keer een opdracht gever die dat wilde, ondanks mijn andere voorstellen. dus, so what als hij het wilt meten per IP ;)

  • flowerp
  • Registratie: September 2003
  • Laatst online: 04-02 02:01
Erkens schreef op 08 augustus 2004 @ 11:48:
[...]

ehm, maar als hij daaraan zijn bezoekers uniek wilt noemen is dat natuurlijk prima ;)
Zo had ik ook een keer een opdracht gever die dat wilde, ondanks mijn andere voorstellen. dus, so what als hij het wilt meten per IP ;)
Dat is natuurlijk waar, maar veel opdrachtgevers denken dat ze iets willen maar blijken dat dan toch niet echt te willen. Laatst nog gezien, een site die betaalde advertenties heeft staan kreeg zeer veel clicks, maar velen waren van een IP afkomstig dat een proxy bleek. Tsja, wat doe je dan? Er kunnen heel veel mensen achter een proxy zitten (zodat het allemaal klopt), maar het kan ook 1 persoon zijn geweest die wat extra bij wil verdienen. Met alleen naar IP kijken weet je dat dus niet. (en adverteerders accepteren het dan ook niet)

Het is nog maar de vraag of TS dit wil, wellicht heeft ie er gewoon nooit bij stil gestaan dat je helemaal geen unieke bezoekers per IP kan meten.

It's shocking to find how many people do not believe they can learn, and how many more believe learning to be difficult.


  • Hans1990
  • Registratie: Maart 2004
  • Niet online
Ik denk dat je wel dit met meerdere systemen gaat gebruiken.

Je zou een tabel IP kunnen maken. En dat je daar unieke ip's altijd in opslaat. Elk IP krijgt dan dus een ID. En dat je dan in de tabel van de nieuwsberichten een extra veld met alle IP's (die ene ID die in die ene IP tabel staat) aan elkaar koppelt, gescheiden met een comma. Dan werkt het volgens mij efficient(er), want je recycled je records ;).

  • Erkens
  • Registratie: December 2001
  • Niet online

Erkens

Fotograaf

flowerp schreef op 08 augustus 2004 @ 13:01:
Het is nog maar de vraag of TS dit wil, wellicht heeft ie er gewoon nooit bij stil gestaan dat je helemaal geen unieke bezoekers per IP kan meten.
true, maar de techniek die gebruikt wordt voor het opslaan van deze unieke bezoekers blijft hetzelfde, of je ze nu met een IP uniek maakt, of met hun DNA-profiel :)

  • flowerp
  • Registratie: September 2003
  • Laatst online: 04-02 02:01
Erkens schreef op 08 augustus 2004 @ 22:52:
[...]

true, maar de techniek die gebruikt wordt voor het opslaan van deze unieke bezoekers blijft hetzelfde, of je ze nu met een IP uniek maakt, of met hun DNA-profiel :)
Lachuh ;) Als je per IP opslaat kun je dat adres gebruiken om een hash table mee te indexen, maar omdat een DNA profiel ietjes groter is weet ik niet zeker of je daar makkelijk een betrouwbare hash code voor kunt berekenen in afzienbare tijd. :+

It's shocking to find how many people do not believe they can learn, and how many more believe learning to be difficult.


  • Roa
  • Registratie: December 2002
  • Laatst online: 03-07-2024

Roa

mahi schreef op 07 augustus 2004 @ 19:29:
EnsconcE: Bedankt voor de tip over die sessies. Ik had met de search eerder al tellers met sessies gevonden, maar het was nog niet in me opgekomen om dat toe te passen voor mijn systeem. Ondertussen werkt de teller al naar tevredenheid en blijkbaar zonder enige performance impact :)
Ja...Uhm, wat heb je nu uiteindelijk gedaan dan :? Dat vind ik dan weer interessant :P
Erkens schreef op 08 augustus 2004 @ 11:48:
[...]

ehm, maar als hij daaraan zijn bezoekers uniek wilt noemen is dat natuurlijk prima ;)
Zo had ik ook een keer een opdracht gever die dat wilde, ondanks mijn andere voorstellen. dus, so what als hij het wilt meten per IP ;)
Wederom, hoe dan, naast IP? Zou iemand mij dat kunnen uitleggen?

Research is what I'm doing when I don't know what I'm doing.


Verwijderd

Roa schreef op 09 augustus 2004 @ 12:58:
Wederom, hoe dan, naast IP? Zou iemand mij dat kunnen uitleggen?
IP + cookie lijkt me de enige manier, en dan nog onbetrouwbaar (stel dat cookies geblockt worden).

IP + user agent string misschien... maar werkt ook niet foolproof als achter een proxy of NAT router meerdere mensen met hetzelfde OS/dezelfde browser zitten.

Oftewel, er is gewoon geen onfeilbare manier om dit te controleren.
Pagina: 1