phpbar.de logo

Mailinglisten-Archive

Sessions/Visits aus Webserver-Log per mySQL ermitteln

Sessions/Visits aus Webserver-Log per mySQL ermitteln

Michael Bergbauer mysql_(at)_lists.phpcenter.de
Sat, 05 May 2001 09:39:57 +0200 (CEST)


On 04-May-2001 Rene Fertig wrote:
> Hallo.
> 
> Ich habe die Logfiles meines Apache mit einem Perlscript zerlegt und in
> eine mySQL-Tabelle "logdata" mit den folgenden Spalten importiert:
> 
> ID
> client
> zeit
> methode
> url
> protokoll
> status
> bytes
> agent
> referer
> 
> Somit kann ich prima nach allem möglichen abfragen. Was ich aber irgendwie
> nicht hinbekomme, ist eine Abfrage nach Sessions bzw. Visits. Eine Session
> beginnt ja mit dem Auftreten einer client-IP-Adresse, die seit einer
> festgelegten Zeit (z.B. 30min) vorher nicht auftrat. Das Ende der Session
> ist das letzte Auftreten dieser IP für die festgelegte Zeit.
> Aber wie finde ich sowas mit mySQL raus? Hat jemand sowas schon gemacht
> und7oder eine Denkansatz für mich? Oder gibt es gar Literatur dazu??
> 
> Bin für jeden hilfreichen Tipp empfänglich..

Mich würd prinzipiell mal interessieren, was du schon gemacht hast, und
nicht zum Erfolg führte.

Grundsätzlich würd ich allerdings sagen, solltest du von MySQL nicht zuviel
sagen: ne Query "Gib mir alles so wie ich es haben will" gibt es leider nicht,
MySQ ist keine eierlegende Wollmilchsau. Ganz ohne Logik im Client wirst du
nicht auskommen, so ein komplexes Thema läßt sich IMHO nicht ganz in einem
einzigen SQL-Statement unterbringen (zumindest nicht ohne Unions, Subselects,
Views, und dem ELWMS-Modul).

Ich würd das wohl so lösen, das ich mir erstmal die Einträge raussuch, die der
Beginn eines Visits sind (select ip, min(zeit) from table group by ip), und
dann die zugehörigen Visits einer nach dem anderen. Ein Problem ist, das du
deine Zeit-Fenster variabel gestalten muss, das aber AFAIK mit MySQl nicht
möglich ist (ich lass mich aber gerne eines besseren belehren), das muss also
 im Client (PHP, C-API, Perl, ..) gemacht werden. und dann kann man die Visits
schön auswerten.

Hmm, wenn ich mir das so recht überlege ... da gibts ne Menge anderer
Lösungsansätze, so gut scheint der gar nicht zu sein ... aber es ist mal einer

Michael

-- 
Michael Bergbauer <michael.bergbauer_(at)_gmx.net>
Use your idle CPU cycles.
See http://www.distributed.net and win $ 1 000.
Visit our mud Geas at geas.franken.de Port 3333

---
*** Weitere Infos zur Mailingliste und MySQL unter http://www.4t2.com/mysql 



php::bar PHP Wiki   -   Listenarchive