[php] dataverkeer per hit bepalen i.v.m. stats

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Ik heb eens een beetje rondgekeken naar het implementeren van een zelfgeschreven stat programma in een website. Nu kan ik in principe alles wat ik in mijn stats pagina wil wel achterhalen op een ding na. Ik wil ook het dataverkeer kunnen bekijken en daarvoor wil ik per hit het dataverkeer weten. Tot nog heb ik echter nog niks kunnen vinden waarmee ik verder kan.

De stats worden dus met php per hit bijgewerkt in een goed uitgewerkte mysql database om het dataverkeer dat hierbij komt kijken te beperken. En het enige dat ik nog wil weten is het dataverkeer per hit.

Iemand ervaring hiermee?

[ Voor 7% gewijzigd door Verwijderd op 13-07-2005 14:32 ]


Acties:
  • 0 Henk 'm!

Verwijderd

Je zal dus moeten weten hoeveel data er naar de gebruiker verstuurd word. Met afbeeldingen is het niet zo'n probleem, kan je filesize() voor gebruiken. Maar met de pagina's word het ietsjes lastiger.
Je zal de iets van implode('',file()) moeten gebruiken, en de data die je daarmee binnen haal heb je de html pagina grootte (html grootte != php bestand grootte).

Maar ja, dan krijg je weer dat je de data die je met dat script op haalt ook weer mee moet rekenen. En dit zal je dan iedere keer moeten doen als de tekst veranderd en dat kost ook weer data.

Beste is dus om de log files te parsen.

Acties:
  • 0 Henk 'm!

  • m33p
  • Registratie: September 2002
  • Laatst online: 05-09 15:26
Kun je niet beter de apache logs uitlezen?

Acties:
  • 0 Henk 'm!

  • GlowMouse
  • Registratie: November 2002
  • Niet online
m33p schreef op woensdag 13 juli 2005 @ 14:41:
Kun je niet beter de apache logs uitlezen?
Dat lijkt me inderdaad makkelijker, want dan weet je ook precies hoeveel er aan headers heen en weer is gestuurd.

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Verwijderd schreef op woensdag 13 juli 2005 @ 14:39:
Je zal dus moeten weten hoeveel data er naar de gebruiker verstuurd word. Met afbeeldingen is het niet zo'n probleem, kan je filesize() voor gebruiken. Maar met de pagina's word het ietsjes lastiger.
Je zal de iets van implode('',file()) moeten gebruiken, en de data die je daarmee binnen haal heb je de html pagina grootte (html grootte != php bestand grootte).
Ga ik in ieder geval proberen
m33p schreef op woensdag 13 juli 2005 @ 14:41:
Kun je niet beter de apache logs uitlezen?
Ik wil liever geen webserver afhankelijke pagina maken, ik test namelijk thuis en als ik weer wat af heb zet ik het op de uiteindelijke server. Misschien niet super handig maar wel lekker snel. Ik zal wel even kijken wat voor webserver er op de uiteindelijke server draait want ik neem aan dat je in de logs wel zo'n beetje alle verkeer kan bekijken

Acties:
  • 0 Henk 'm!

  • pietje63
  • Registratie: Juli 2001
  • Laatst online: 16:14

pietje63

RTFM

je kunt wel statistieken maar over KB (incl plaatjes) per pagina, maar is niet heel precies (ivm cache browser), daarom moet je denk ik toch met de logs van de server gaan werken

De grootste Nederlandstalige database met informatie over computers met zoekfunctie!!


Acties:
  • 0 Henk 'm!

  • Bosmonster
  • Registratie: Juni 2001
  • Laatst online: 18-09 16:28

Bosmonster

*zucht*

Ehm.. ja.. maar hoe ga jij zien of een client/browser een plaatje uit de cache haalt bijvoorbeeld? Dan reken jij het mooi uit alsof die alles moet downloaden.

Dus je zult of de logs uit moeten pluizen (ook stuk efficienter, scheelt je een enorme berg data verzamelen en opslaan in iedere pagina), of je moet ALLE files op de server via een speciaal logscript moeten lopen (afbeeldingen, flash, etc).

Acties:
  • 0 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 09-09 13:58

NMe

Quia Ego Sic Dico.

Verwijderd schreef op woensdag 13 juli 2005 @ 14:39:
Je zal dus moeten weten hoeveel data er naar de gebruiker verstuurd word. Met afbeeldingen is het niet zo'n probleem, kan je filesize() voor gebruiken. Maar met de pagina's word het ietsjes lastiger.
Je zal de iets van implode('',file()) moeten gebruiken, en de data die je daarmee binnen haal heb je de html pagina grootte (html grootte != php bestand grootte).
Bovenaan je pagina:
PHP:
1
ob_start();

En onderaan, als alle uitvoer uitgevoerd is:
PHP:
1
$filesize = strlen(ob_get_contents());

Dan heb je met uitzondering van de headers de bytegrootte van datgene wat de huidige pagina verstuurt. Let wel dat je in dat geval niet met gzip encoding kan werken, want dan klopt die grootte niet meer vermoed ik. Bovendien is het inderdaad beter om simpelweg de logs van je webserver uit te lezen, dat is veel secuurder. :)

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


Acties:
  • 0 Henk 'm!

  • sjroorda
  • Registratie: December 2001
  • Laatst online: 14:31
Van afbeeldingen en zo kan je relatief makkelijk de grootte achterhalen. Voor het berekenen van je HTML-output kan je waarschijnlijk wel gebruik maken van de output buffering functies van PHP. Wat dit trouwens aan overhead met zich meebrengt, weet ik niet, dat moet je zelf uit proberen te zoeken (outputbuffering zelf zal niet zo heftig zijn, of je moet extreem grote pagina's hebben, maar bij elke hit opnieuw de DB openen, schrijven, sluiten kost wellicht redelijk wat extra resources).

Afhankelijk van hoe statisch de pagina's zijn: kan je geen eigen cache maken met daarin de (desnoods gemiddelde) grootte van pagina x? Dan kan je aan de hand van je stats en van deze gegevens je dataverkeer berekenen.

edit:

^ zeg ik...

[ Voor 3% gewijzigd door sjroorda op 13-07-2005 15:24 ]


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
met ob_start() en strlen(ob_get_contents()) krijg ik alleen het aantal tekens dat verstuurd is maar als er dus een plaatje in het script staat dan wordt alleen de html tag meegerekent en niet het plaatje zelf.

Beetje jammer, ik had bijna het idee dat het nauwkeurig genoeg voor mij was maar helaas. Toch maar eens in de logs gaan pluizen dan.

edit:

volgens mij moet het wel mogelijk zijn om de plaatjes uit de ob_get_contents te halen en deze vervolgens te controleren op grootte en deze meeberekenen bij het aantal bytes.

[ Voor 22% gewijzigd door Verwijderd op 13-07-2005 16:15 ]


Acties:
  • 0 Henk 'm!

  • sjroorda
  • Registratie: December 2001
  • Laatst online: 14:31
Verwijderd schreef op woensdag 13 juli 2005 @ 16:10:
met ob_start() en strlen(ob_get_contents()) krijg ik alleen het aantal tekens dat verstuurd is maar als er dus een plaatje in het script staat dan wordt alleen de html tag meegerekent en niet het plaatje zelf.

Beetje jammer, ik had bijna het idee dat het nauwkeurig genoeg voor mij was maar helaas. Toch maar eens in de logs gaan pluizen dan.
Dat kan je oplossen door met een regexp de plaatjes uit de source te filteren en daar stuk voor stuk de grootte van te bepalen. Jij wil het moeilijk, jij krijgt het moeilijk :+

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
sjroorda schreef op woensdag 13 juli 2005 @ 16:13:
[...]

Dat kan je oplossen door met een regexp de plaatjes uit de source te filteren en daar stuk voor stuk de grootte van te bepalen. Jij wil het moeilijk, jij krijgt het moeilijk :+
Dat bedoel ik ja, dan maar ff moeilijk doen he :)

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Wat ik me overigens ook nog af vraag is of het niet mogelijk is de grootte van de pagina in javascript op te halen. Dan zou je als het goed is alles in een keer moeten kunnen pakken maar voor zover heb ik nog geen mogelijk gevonden om dit met js te doen.

Je houd dan uiteraard nog steeds dat het niet heel precies is maar daar valt wel mee te leven. De logfiles uitlezen kan ik volgens mij niet op de server want ik kan niet bij de logfiles komen voor zover ik weet. Net een mailtje naar de hosting gestuurd om het even na te checken

Acties:
  • 0 Henk 'm!

  • Erkens
  • Registratie: December 2001
  • Niet online

Erkens

Fotograaf

ehm, javascript is clientside, nooit te vertrouwen, daarnaast is het veel eenvoudiger om de logfile erbij te pakken.

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Erkens schreef op woensdag 13 juli 2005 @ 17:34:
ehm, javascript is clientside, nooit te vertrouwen, daarnaast is het veel eenvoudiger om de logfile erbij te pakken.
Zit wel iets in, maar de logfiles uitlezen weet ik dus zo nog niet of dat kan op de server omdat ik ze alleen via het control panel kan benaderen.

Wat het overigens ook nog is met de grootte van de plaatjes bekijken in php is dat de gecachede (of hoe je dat ook schrijft :? ) plaatjes wel meegenomen worden bij het dataverkeer maar niet worden verstuurd van de server naar de client dus die methode met ob_start en ob_get_contents valt in principe ook af

Acties:
  • 0 Henk 'm!

  • Erkens
  • Registratie: December 2001
  • Niet online

Erkens

Fotograaf

Verwijderd schreef op woensdag 13 juli 2005 @ 17:40:
Zit wel iets in, maar de logfiles uitlezen weet ik dus zo nog niet of dat kan op de server omdat ik ze alleen via het control panel kan benaderen.
dat is dan iets wat je met je hosting provider moet bespreken :)
Wat het overigens ook nog is met de grootte van de plaatjes bekijken in php is dat de gecachede (of hoe je dat ook schrijft :? ) plaatjes wel meegenomen worden bij het dataverkeer maar niet worden verstuurd van de server naar de client dus die methode met ob_start en ob_get_contents valt in principe ook af
als je alles via een script laat gaan, dus ook het laden van alle plaatjes is er dus geen enkel probleem, als er namelijk iets gecached is dan wordt het simpelweg niet opgevraagd.

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
[...]

als je alles via een script laat gaan, dus ook het laden van alle plaatjes is er dus geen enkel probleem, als er namelijk iets gecached is dan wordt het simpelweg niet opgevraagd.
Hier snap ik je ff niet helemaal. Het is namelijk niet de bedoeling dat ik bestaande pagina's om moet gaan bouwen. Ik heb zeg maar een hoofdpagina waarin alle pagina's geinclude kunnen worden. In die hoofdpagina moet het gedeelte zitten dat de stats bijhoud. En in andere pagina's wil ik niks wijzigen.

Kortom ik snap dus ff nie wat je bedoelt :P

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Net bericht van de hosting gehad, en ik heb dus inderdaad niet de mogelijkheid om de logfiles uit te lezen in mijn script :( . Nu vroeg ik me af of Erkens nog even zijn laatste post uit wil leggen omdat ik alle methodes die ik tegengekomen ben niet precies genoeg vind op de logfiles na dan maar dat kan dus niet.

Acties:
  • 0 Henk 'm!

  • AK47
  • Registratie: Juli 2001
  • Laatst online: 04-05-2024
Ah, nu zie ik dat je geen eigen hosting hebt (je regelt niet zelf de webserver). Anders was het mogelijk geweest om statistieken te maken met behulp van MRTG, maar dat heeft weinig te maken met PHP.

MRTG kan voor je met behulp van SNMP het dataverkeer van je netwerkkaart (of switch) 'uitplotten'. Misschien kun je je webhost vragen voor hun MRTG pagina (mits ze die hebben)? Maar dan heb je natuurlijk wel het dataverkeer van die complete webserver :P

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
AK47 schreef op donderdag 14 juli 2005 @ 14:55:
Ah, nu zie ik dat je geen eigen hosting hebt (je regelt niet zelf de webserver). Anders was het mogelijk geweest om statistieken te maken met behulp van MRTG, maar dat heeft weinig te maken met PHP.
Ik heb 3 dagen geleden met een paar man ook zelf een server aangeschaft, wellicht leuk om daar eens op uit te proberen, maar de site waarbij de stats horen lijkt het me niet echt efficient om ook nog uit te gaan zoeken welk verkeer er van onze site en wat er van andere sites op de server ;) .
Maar in ieder geval bedankt voor de tip

Acties:
  • 0 Henk 'm!

  • GlowMouse
  • Registratie: November 2002
  • Niet online
Misschien kun je met mod_rewrite echt alles via een PHP script laten lopen, terwijl je ondertussen toch een filesystem hebt waar je alles in kunt zetten. Tel de headers op, doe daar de lengte van de outputbuffer bij, en volgens mij heb je dan een aardige schatting.

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
GlowMouse schreef op donderdag 14 juli 2005 @ 15:12:
Misschien kun je met mod_rewrite echt alles via een PHP script laten lopen, terwijl je ondertussen toch een filesystem hebt waar je alles in kunt zetten. Tel de headers op, doe daar de lengte van de outputbuffer bij, en volgens mij heb je dan een aardige schatting.
Klinkt intressant, kga het even uitzoeken

Acties:
  • 0 Henk 'm!

  • Erkens
  • Registratie: December 2001
  • Niet online

Erkens

Fotograaf

Verwijderd schreef op woensdag 13 juli 2005 @ 17:53:
[...]


Hier snap ik je ff niet helemaal. Het is namelijk niet de bedoeling dat ik bestaande pagina's om moet gaan bouwen. Ik heb zeg maar een hoofdpagina waarin alle pagina's geinclude kunnen worden. In die hoofdpagina moet het gedeelte zitten dat de stats bijhoud. En in andere pagina's wil ik niks wijzigen.

Kortom ik snap dus ff nie wat je bedoelt :P
Wat ik bedoel is dat wanneer je al het verkeer van de site via een scriptje laat doen, dus ook alle plaatjes, alle downloads, alles, dan kan je al dit verkeer ook meten.
Ook op het moment van cacheing zal je geen probleem ondervinden zoals je wel hebt als je gewoon alle bytes van alle plaatjes op de pagina bij elkaar telt, terwijl bijvoorbeeld de helft van al die plaatjes al in de browser cache stond.
Maar het is wel enorm veel werk als het een bestaande site betreft.

Maar houdt je hosting provider dan niet bij hoeveel traffic je gebruikt :?

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Erkens schreef op donderdag 14 juli 2005 @ 17:14:
[...]

Wat ik bedoel is dat wanneer je al het verkeer van de site via een scriptje laat doen, dus ook alle plaatjes, alle downloads, alles, dan kan je al dit verkeer ook meten.
Ook op het moment van cacheing zal je geen probleem ondervinden zoals je wel hebt als je gewoon alle bytes van alle plaatjes op de pagina bij elkaar telt, terwijl bijvoorbeeld de helft van al die plaatjes al in de browser cache stond.
Maar het is wel enorm veel werk als het een bestaande site betreft.

Maar houdt je hosting provider dan niet bij hoeveel traffic je gebruikt :?
Als het enorm veel werk betreft dan houd het al op, want ik zit al vrij krap met de tijd. De hosting houd dit uiteraard ook bij, maar ik wil de stats ingebouwd hebben in het admin paneel dat ik voor de site maak. Bovendien heb ik alle benodigde stats verder wel op dus het dataverkeer na.

In ieder geval bedankt voor je uitleg.

Ik maak wel een benadering van het dataverkeer en voor de precieze dataverkeer stats verwijs ik ze door naar de stats van de hosting.

Het is wel jammer want we zijn bezig met een t-shirt editor in java en daarvan kan ik onmogelijk een benadering van het verkeer maken, en daar draait de site uiteindelijk ook om. Maar goed ik heb mijn best gedaan en als ze het anders willen dan moeten ze het uitkiezen van de server voortaan ook maar aan ons overlaten... |:(
Pagina: 1