PDA

Bekijk Volledige Versie : [MySQL] en IE



Andy Camps
11/08/03, 01:15
Hoi,

Ik wil tellen hoeveel pdf-jes er gedownload worden op een site. Hiervoor
gebruik ik PHP en MySQL.

Zonder problemen krijg ik iets in elkaar zoals
$query = "UPDATE links SET hits=hits+1 WHERE id='$id'";
mysql_query($query);

Werkt prima in OP en Moz, maar niet in IE, hoe kan het ook anders...

Ik heb dus hetzelfde probleem als Rob in
http://www.google.be/groups?hl=nl&lr=&ie=UTF-8&oe=UTF-8&frame=right&th=c97301c2f5725cd1&seekm=MPG.18da5de11c41cb969896a1%40news.cistron.nl #link6

IE telt per bestand 3 of 4 erbij. Nu begrijp ik al uit het antwoord op
de vraag van Rob dat ik zou moeten gaan kijken welke codes er meegegeven
worden (incomplete download (206), all ok (200), cache-hit (304)), maar
vraag me af hoe ik dit moet aanpakken. Ik dacht te zoeken bij de
http-functions van PHP, maar daar geraak ik niet veel verder.

Iemand een idee hoe ik bij IE een correcte telling kan afdwingen? Cookie
zetten? (liever niet als 't kan, kunnen immers uit staan) Session
lanceren met daarin melding dat er al een download gestart is? Wat
denken jullie?

Andy

Rene Pijlman
11/08/03, 03:30
Andy Camps:
>Ik wil tellen hoeveel pdf-jes er gedownload worden op een site.

Log file van de web server analyseren. Of een event in de web server
pluggen.

>Hiervoor gebruik ik PHP en MySQL.

If all you have is a hammer, everything looks like a nail :-)

>Zonder problemen krijg ik iets in elkaar zoals
>$query = "UPDATE links SET hits=hits+1 WHERE id='$id'";

Dat lijkt me behoorlijk correct. Mist dit statement precies 1 keer per
download ge-executeerd wordt en altijd wordt gevolgd door een Commit.

>Werkt prima in OP en Moz, maar niet in IE, hoe kan het ook anders...

Que? Dit draait toch op de server. Hoezo "in Moz" en "in IE"?

>Ik heb dus hetzelfde probleem als Rob in
>http://www.google.be/groups?hl=nl&lr=&ie=UTF-8&oe=UTF-8&frame=right&th=c97301c2f5725cd1&seekm=MPG.18da5de11c41cb969896a1%40news.cistron.nl #link6

Oh, bedoel je dat.

>IE telt per bestand 3 of 4 erbij.

Nee. _Jij_ telt er 1 bij per HTTP-request, in plaats van per download.

>Nu begrijp ik al uit het antwoord op
>de vraag van Rob dat ik zou moeten gaan kijken welke codes er meegegeven
>worden (incomplete download (206), all ok (200), cache-hit (304)), maar
>vraag me af hoe ik dit moet aanpakken. Ik dacht te zoeken bij de
>http-functions van PHP, maar daar geraak ik niet veel verder.

De preciese betekenis van deze codes is gedocumenteerd in de HTTP RFC:
http://www.ietf.org/rfc/rfc2616.txt

>Iemand een idee hoe ik bij IE een correcte telling kan afdwingen? Cookie
>zetten? (liever niet als 't kan, kunnen immers uit staan) Session
>lanceren met daarin melding dat er al een download gestart is? Wat
>denken jullie?

Wij denken dat het tellen van downloads niet _zo_ belangrijk kan zijn dat
het een wetenschappelijke analyse rechtvaardigt :-)

HTTP is nu eenmaal niet zo eenduidig. De client kan allerlei verschillende
requests doen voor gehele en gedeeltelijke downloads en de server kan er
op verschillende manieren op reageren.

Een redelijke benadering die in HTTP analyzers meestal gevolgd wordt is:
gelijkluidende requests van hetzelfde IP-nummer binnen een bepaald
tijdwindow als 1 request beschouwen. Ik heb desgewenst wel een stukje
Python-code voor je die dit doet (analyse van gebruikte zoekwoorden uit
htdig log).

--
René Pijlman

Wat wil jij leren? http://www.leren.nl

Andy Camps
11/08/03, 22:15
Rene Pijlman wrote:
> Andy Camps:
>
>>Ik wil tellen hoeveel pdf-jes er gedownload worden op een site.
>
> Log file van de web server analyseren. Of een event in de web server
> pluggen.
>
>>Hiervoor gebruik ik PHP en MySQL.
>
> If all you have is a hammer, everything looks like a nail :-)
It's hammer time! ;-)
>
>>Zonder problemen krijg ik iets in elkaar zoals
>>$query = "UPDATE links SET hits=hits+1 WHERE id='$id'";
>
> Dat lijkt me behoorlijk correct. Mist dit statement precies 1 keer per
> download ge-executeerd wordt en altijd wordt gevolgd door een Commit.
Commit?
<knip>
> Nee. _Jij_ telt er 1 bij per HTTP-request, in plaats van per download.
Klopt, had dit beter ook zo uitgelegd.
>
>>Nu begrijp ik al uit het antwoord op
>>de vraag van Rob dat ik zou moeten gaan kijken welke codes er meegegeven
>>worden (incomplete download (206), all ok (200), cache-hit (304)), maar
>>vraag me af hoe ik dit moet aanpakken. Ik dacht te zoeken bij de
>>http-functions van PHP, maar daar geraak ik niet veel verder.
>
> De preciese betekenis van deze codes is gedocumenteerd in de HTTP RFC:
> http://www.ietf.org/rfc/rfc2616.txt
>
>>Iemand een idee hoe ik bij IE een correcte telling kan afdwingen? Cookie
>>zetten? (liever niet als 't kan, kunnen immers uit staan) Session
>>lanceren met daarin melding dat er al een download gestart is? Wat
>>denken jullie?
>
> Wij denken dat het tellen van downloads niet _zo_ belangrijk kan zijn dat
> het een wetenschappelijke analyse rechtvaardigt :-)
/wij..
>
> HTTP is nu eenmaal niet zo eenduidig. De client kan allerlei verschillende
> requests doen voor gehele en gedeeltelijke downloads en de server kan er
> op verschillende manieren op reageren.
>
> Een redelijke benadering die in HTTP analyzers meestal gevolgd wordt is:
> gelijkluidende requests van hetzelfde IP-nummer binnen een bepaald
> tijdwindow als 1 request beschouwen. Ik heb desgewenst wel een stukje
> Python-code voor je die dit doet (analyse van gebruikte zoekwoorden uit
> htdig log).
Wat noem je een bepaald tijdwindow? Ik betwijfel of ik je code kan
gebruiken. Nooit met Python gewerkt. Sorry.

Wetenschappelijke analyse moet van mij ook niet hoor. Een werkend
resultaat en ik slaap weer goed.

Andy

Rene Pijlman
12/08/03, 01:15
Andy Camps:
>Rene Pijlman wrote:
>> Een redelijke benadering die in HTTP analyzers meestal gevolgd wordt is:
>> gelijkluidende requests van hetzelfde IP-nummer binnen een bepaald
>> tijdwindow als 1 request beschouwen.
>
>Wat noem je een bepaald tijdwindow?

Nou, een kwartiertje ofzo, of een half uur. Het komt er niet zo precies op
aan. Hoewel het in jouw geval misschien met de lengte van de downloads
samenhangt (mensen die een bijna-voltooide download herstarten e.d.).

--
René Pijlman

Wat wil jij leren? http://www.leren.nl

Andy Camps
12/08/03, 23:45
Rene Pijlman wrote:
> Andy Camps:
>
>>Rene Pijlman wrote:
>>
>>>Een redelijke benadering die in HTTP analyzers meestal gevolgd wordt is:
>>>gelijkluidende requests van hetzelfde IP-nummer binnen een bepaald
>>>tijdwindow als 1 request beschouwen.
>>
>>Wat noem je een bepaald tijdwindow?
>
>
> Nou, een kwartiertje ofzo, of een half uur. Het komt er niet zo precies op
> aan. Hoewel het in jouw geval misschien met de lengte van de downloads
> samenhangt (mensen die een bijna-voltooide download herstarten e.d.).
>
Moeilijk denk ik. Effe wat doorgewerkt ('s nachts doorwerken gaat prima,
aangenaam weertje dan) en een oplossing gevonden met sessions. Wel een
unieke ID nodig per link, maar het werkt zonder IP's en timers. De
unieke ID wordt doorgegeven aan de session, alleen eentje bijtellen als
er nog niks in de session zit. Werkt in IE6, OP7 en Moz1.1.

Herstarten van een download wordt niet geteld aangezien de unieke ID dan
niet gewijzigd wordt.