AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Webstatistiken auslesen

Ein Thema von fkerber · begonnen am 10. Mai 2006 · letzter Beitrag vom 2. Jan 2007
Antwort Antwort
Seite 1 von 2  1 2      
Benutzerbild von fkerber
fkerber
(CodeLib-Manager)

Registriert seit: 9. Jul 2003
Ort: Ensdorf
6.723 Beiträge
 
Delphi XE Professional
 
#1

Webstatistiken auslesen

  Alt 10. Mai 2006, 08:49
Hi!

Ich habe ein kleines Problem. Ich betreue den Webauftritt einer kleineren Firma. Deren Chef würde jetzt gerne öfter mal einen Blick auf die Statistiken werfen, insbesondere mal so zwischendurch nen kurzen Blick auf die Besucherzahlen.

Zwar steht uns awstat zur Verfügung, allerdings fühlt er sich durch die Fülle an Informationen regelrecht erschlagen, was ich auch durchaus nachvollziehen kann.

Natürlich kann ich jetzt einfach selbst einen seperaten Counter zusammenprogrammieren, wenn das allerdings tagesaktuelle Auswertung werden soll, dann wird das schon etwas aufwändig (auch wenn es machbar wäre)


Deswegen jetzt die eigentliche Frage:
Kann ich irgendwie die awStats auslesen oder direkt auf die Apache Logs (ich denke mal, da kommen die Daten her?) zugreifen?
Wichtig ist dabei, das ganze soll in PHP funktionieren, also leider nix mit Indy die Ausgabe-Seite parsen
Falls es nicht anders geht, würde ich mich mal noch nach CGI umschauen, aber auf jeden Fall webbasiert.

Was gibt es denn da so für Möglichkeiten?


Ciao Frederic
Frederic Kerber
  Mit Zitat antworten Zitat
Benutzerbild von sh17
sh17

Registriert seit: 26. Okt 2005
Ort: Radebeul
1.594 Beiträge
 
Delphi 11 Alexandria
 
#2

Re: Webstatistiken auslesen

  Alt 10. Mai 2006, 09:16
also bei 1und1 mit apache sind die logs in

/logs/access.log.xy.gz

zu finden

wobei xy die Woche des aktuellen Jahres ist.

Die brauchst Du "bloss" auspacken und kannst Sie auswerten.
Sven Harazim
--
  Mit Zitat antworten Zitat
Benutzerbild von Matze
Matze
(Co-Admin)

Registriert seit: 7. Jul 2003
Ort: Schwabenländle
14.929 Beiträge
 
Turbo Delphi für Win32
 
#3

Re: Webstatistiken auslesen

  Alt 10. Mai 2006, 09:27
Moin, bei mir (MW-Internet) sind diese archiviert in

log\old\access_log_2005_w45-0.gz

Man sieht, auch mit Angabe der Kalenderwoche. Die aktuelle Datei ist bei mir direkt im log-Ordner. Bei einem anderen Hoster von mir ist es genauso. Also, wie sh17 sagte, einfach entpacken und auslesen. Doch Achtung, die Dateien sind dann relativ groß (bei mir ~8 MB).


Btw: Cool, dass du eine Firmenseite wartest, das kommt evtl. auch ml auf mich zu, dann werde ich mir evtl. mal bei dir Rat holen. ^^
  Mit Zitat antworten Zitat
Benutzerbild von fkerber
fkerber
(CodeLib-Manager)

Registriert seit: 9. Jul 2003
Ort: Ensdorf
6.723 Beiträge
 
Delphi XE Professional
 
#4

Re: Webstatistiken auslesen

  Alt 10. Mai 2006, 10:47
Hi!

Ok, danke soweit mal für die Info.
Ich habe den Ordner auf dem Webspace gefunden und frage dann mal bei meinem Hoster an, ob er mir da nicht mal Zugriff gewähren will


Ciao Frederic
Frederic Kerber
  Mit Zitat antworten Zitat
Benutzerbild von Matze
Matze
(Co-Admin)

Registriert seit: 7. Jul 2003
Ort: Schwabenländle
14.929 Beiträge
 
Turbo Delphi für Win32
 
#5

Re: Webstatistiken auslesen

  Alt 10. Mai 2006, 10:49
Hi,

normalerweise müsstest du doch Zugriff darauf haben.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.153 Beiträge
 
Delphi 12 Athens
 
#6

Re: Webstatistiken auslesen

  Alt 10. Mai 2006, 11:11
Nicht immer, es gibt einige Anbieter, die z.B. solche Dinge gesperrt haben (hatte ich och ma) -.-''


@fkerber: eventuell kann es aber dennoch einfacher sein was eigenes zu basteln (aber da git's ja auch schon Fertiges), denn das Parsen der nötigen Informationen ('s steht ja nicht gerade wenig drin) ist auch nicht mit unbedingt wenig Aufwand möglich.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Benutzerbild von Matze
Matze
(Co-Admin)

Registriert seit: 7. Jul 2003
Ort: Schwabenländle
14.929 Beiträge
 
Turbo Delphi für Win32
 
#7

Re: Webstatistiken auslesen

  Alt 10. Mai 2006, 11:20
Es passt irgendwie zum Thema:
Mich würde auch interessieren, wie man so etwas selbst macht. Logt man einfach jeden Seitenaufruf in der Datenbank mit IP, Link, Uhrzeit & Co und liest das da nur aus (Anzeige in Balkendiagrammen z.B.) oder geht man da ganz anders vor?

Denn bei einer gut besuchten Webseite wären das ja riesige Datenbanktabellen.
Ich denke auch, dass es einfacher ist, als das ganze On-The-Fly zu parsen und auszugeben, denn das Entpacken benötigt auch gewisse Zeit und das Parsen sowieo. Da ist etwas eigenes sicher schneller und resourcenschonender.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.153 Beiträge
 
Delphi 12 Athens
 
#8

Re: Webstatistiken auslesen

  Alt 10. Mai 2006, 12:11
Wenn ihm nur ein Überblick reicht ... dat is eigentlich recht einfach.

winziger Counter (per [IMG] gehts leider nicht -.-'')
links (groß) = Gesamtbesucher (seit Counterstart)
rechts oben = laufende Woche (letze 7 Tage)
mitte unten = heute (seit 0 Uhr)
rechts unten = aktuell (in den letzten Minuten)

Die IPs werden natülich gekoggt (für 'ne Weile), damit kein Besucher mehrmals gezähl wird, wenn er sich z.B. mehrere Seiten ansieht)

Eingebunden wirds z.B. als Bild über http://URL/Zaehler.php?ID={ID},
wobei noch die Parameter &F={Farbe} (Textfarbe) und &Z=0 (nur Anzeigen, nicht mitzählen) angegeben werden könnten.

Und was die Datenmenge angeht ... da bei mir mehrere Counter verwaltet werden, gibt's 'ne Liste der CounterIDs (Zaehler.txt):
Code:
00
01
02
Und für jeden Counter die Zählerstande + IPs:
IP-Liste: (ZaehlerIPs_*.txt)
Code:
1147261400»xxx.xxx.xxx.xx1
1147261409»xxx.xxx.xxx.xx9
Zählerstände (Zaehler_*.txt):
Code:
13278
850
1
1
2
1
0
2
1
Also soviele Daten sind dat garnicht ... die IPs werdne ja nach 'ner bestimmten Zeit eh bereinigt und was den Rest (Zaehler_*.txt) angeht eine Zeile für's Datum (damit es am nächsten Tag umschaltet ... man könnte ja auch Stunden+24*Datum nehmen, dann hätte man 'ne stündliche Auswertung), dann der gesamtzählerstand und jeweils noch 'ne Zeile pro Intervall (halb bei mir 7 Zeilen für 7 Tage).
Hatte es mit gespart für die paar Daten noch 'ne Datenbank einzusetzen ... lohnt sich garnicht, aber wer's mag, der kann ja och alles in 'ner DB speichern, wobei das textbasierende vermutlich schneller ist und zusätzlich auch dann läuft, wenn die DB mal nicht verfügbar ist.


In dem Bild wird zwar nur gesamt ausgewerte, aber man könnte ja och die Werte einzeln auslesen und z.B. in 'ner Tabelle anzeigen.


Also klein is die "einzige" PHP-Datei eigentlich och und falls dat hilft ... hier isse (is zwar auch schon in die Jahre kekommen, aber sie läuft und läuft und läuft)
Code:
<?php
  // © 1997-2005 by FNS Enterprize's™
  //   2003-2005 by himitsu @ Delphi-PRAXiS

  ignore_user_abort(true);

  // ID-Kontrolle
  $Dateizeiger = fopen("Zaehler.txt", "r");
  $ZaehlerID_freigegeben = false;
  while (!feof($Dateizeiger) && !$ZaehlerID_freigegeben)
    if (trim(fgets($Dateizeiger)) == $HTTP_GET_VARS["ID"]) $ZaehlerID_freigegeben = true;
  fclose($Dateizeiger);

  if (!$ZaehlerID_freigegeben) {
    echo "unbekannte ID (\"" . $HTTP_GET_VARS["ID"] . "\")";
    exit;
  }

  // Variablen
  $D_Zaehler            = "Zaehler_" . $HTTP_GET_VARS["ID"] . ".txt";
  $D_Zaehler_BesucherIPs = "ZaehlerIPs_" . $HTTP_GET_VARS["ID"] . ".txt";
  $Dauer = 7;

  // Dateien prüfen (kann entfallen, wenn sie schon existieren)
  if (!file_exists($D_Zaehler)) {
    for ($i = 0; $i < 2 + $Dauer; $i++) $Zaehler[$i] = 0;
    touch($D_Zaehler); chmod($D_Zaehler, 0777);
    $fh = fopen($D_Zaehler, "w");
    fwrite($fh, join("\r\n", $Zaehler));
    fclose($fh);
  }
  if (!file_exists($D_Zaehler_BesucherIPs)) {
    touch($D_Zaehler_BesucherIPs); chmod($D_Zaehler_BesucherIPs, 0777);
    $fh = fopen($D_Zaehler_BesucherIPs, "w"); fclose($fh);
  }

  // Daten lesen
  $Dateizeiger = fopen($D_Zaehler, "r");
  $Zaehler = array();
  $i = 0;
  while (!feof($Dateizeiger) && ($i < 2 + $Dauer))
    if (($Temp = trim(fgets($Dateizeiger))) > "")
      $Zaehler[$i++] = intval($Temp);
  fclose($Dateizeiger);

  $Dateizeiger = fopen($D_Zaehler_BesucherIPs, "r");
  $Zaehler_BesucherIPs = array();
  $i = 0;
  while (!feof($Dateizeiger))
    if (($Temp = trim(fgets($Dateizeiger))) > "")
      $Zaehler_BesucherIPs[$i++] = $Temp;
  fclose($Dateizeiger);

  $BesucherIP = $_SERVER["REMOTE_ADDR"];
  $Datum = floor(time() / 86400);

  // Statistik prüfen
  if ($Zaehler[0] != $Datum) {
    $Tage = $Datum - $Zaehler[0];
    $Zaehler[0] = $Datum;
    for ($i = $Dauer - 1; $i > 0; $i--)
      if ($Tage <= $i) $Zaehler[2 + $i] = $Zaehler[2 + $i - $Tage]; else $Zaehler[2 + $i] = 0;
    for ($i = 0; $i < $Tage; $i++) $Zaehler[2 + $i] = 0;
    if ($HTTP_GET_VARS["Z"] == "0") {
      // Zählerstände speichern
      $fh = fopen($D_Zaehler, "w");
      fwrite($fh, join("\r\n", $Zaehler));
      fclose($fh);
    }
  }

  // alte IPs löschen
  $Zaehler_BesucherIPs_ = array();
  $BesucherIP_unbekannt = true;
  $j = 0;
  for ($i = 0; $i < count($Zaehler_BesucherIPs); $i++) {
    $temp = explode("»", $Zaehler_BesucherIPs[$i]);
    if ($temp[0] > time()) {
      if ($temp[1] == $BesucherIP) {
        $Zaehler_BesucherIPs_[$j] = (time() + 3600) . "»" . $BesucherIP;
        $BesucherIP_unbekannt = false;
      } else $Zaehler_BesucherIPs_[$j] = $Zaehler_BesucherIPs[$i];
      $j++;
    }
  }

  if ($BesucherIP_unbekannt && ($HTTP_GET_VARS["Z"] != "0")) {
    // BesucherIP merken
    $Zaehler_BesucherIPs_[count($Zaehler_BesucherIPs_)] = (time() + 3600) . "»" . $BesucherIP;
    // Zähler erhöhen
    $Zaehler[1]++;
    $Zaehler[2]++;
    // Zählerstände speichern
    $fh = fopen($D_Zaehler, "w");
    fwrite($fh, join("\r\n", $Zaehler));
    fclose($fh);
  }

  // die BesucherIPs speichern
  $fh = fopen($D_Zaehler_BesucherIPs, "w");
  fwrite($fh, join("\r\n", $Zaehler_BesucherIPs_));
  fclose($fh);

  ignore_user_abort(false);

  // Ausgabe
  $j = 0;
  for ($i = 0; $i < $Dauer; $i++) $j += $Zaehler[2 + $i];
  $Bild = imagecreate(75, 18);
  $Hintergrundfarbe = imagecolorallocate($Bild, 254, 254, 254);
  if (strlen($HTTP_GET_VARS["F"]) == 6) {
    $Textfarbe = imagecolorallocate($Bild, hexdec(substr($HTTP_GET_VARS["F"], 0, 2)), hexdec(substr($HTTP_GET_VARS["F"], 2, 2)), hexdec(substr($HTTP_GET_VARS["F"], 4, 2)));
  } else {
    $Textfarbe = imagecolorallocate($Bild, 0, 0, 0);
  }
  imagefill($Bild, 1, 1, $Hintergrundfarbe);
  imagestring ($Bild, 5, 0, 1, $Zaehler[1], $Textfarbe);
  imagestring ($Bild, 1, 75 - (imagefontwidth(1) * strlen($j)), 0, $j, $Textfarbe);
  imagestring ($Bild, 1, 75 - (imagefontwidth(1) * strlen($Zaehler[2] . " " . count($Zaehler_BesucherIPs_))), 18 - imagefontheight(1), $Zaehler[2] . " " . count($Zaehler_BesucherIPs_), $Textfarbe);
  imagecolortransparent($Bild, $Hintergrundfarbe);
  header("Content-Type: image/png");
  imagepng($Bild);
  imagedestroy($Bild);
  exit;
?>
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Benutzerbild von fkerber
fkerber
(CodeLib-Manager)

Registriert seit: 9. Jul 2003
Ort: Ensdorf
6.723 Beiträge
 
Delphi XE Professional
 
#9

Re: Webstatistiken auslesen

  Alt 10. Mai 2006, 12:50
Hi!

Danke für den Code, werder ich mich mal einlesen.
Habe eben auch noch weiter mit Matze darüber gesprochen, der mir freundlicherweise auch mal so einen Log-File zur Verfügung gestellt hat. Nachdem ich den dann mal gesehen habe, wurde recht schnell klar, dass es nichts bringt, das Parsen zu wollen.

Es wird also auf einen seperaten Counter (mit DB) rauslaufen, da werd ich mich heut mittag dann mal rannmachen...

Danke für eure Unterstützung.


Ciao Frederic
Frederic Kerber
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.153 Beiträge
 
Delphi 12 Athens
 
#10

Re: Webstatistiken auslesen

  Alt 10. Mai 2006, 13:32
Na dann viel Spaß dabei

PS: Ach ja, eingebunden hab'sch meinen Counter natürlich so, damit der Besucher auch weiß was welche Zahl bedeutet der passende Hint und dann halt noch'n Link zur großen Ansicht
Code:
[img]http://.../Zaehler.php?ID=01&amp;F=000000[/img]
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:24 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz