Anzeige:
Ergebnis 1 bis 7 von 7

Thema: Mit PHP aus Apache_log Traffic errechnen

  1. #1
    Registrierter Benutzer
    Registriert seit
    03.04.2007
    Beiträge
    5

    Mit PHP aus Apache_log Traffic errechnen

    Ich will mit Hilfe von PHP meine Log-Dateien auslesen und dann den Traffic zusammen rechnen.
    Code:
    127.0.0.1 - - [09/Nov/2006:15:54:54 +0100] "GET /style.css HTTP/1.1" 200 4535 "http://www.x.de/FFD_index.html" "Mozilla/5.0 (compatible; Konqueror/3.5; Linux) KHTML/3.5.5 (like Gecko) (Kubuntu)"
    127.0.0.1 - - [09/Nov/2006:15:54:54 +0100] "GET /back.gif HTTP/1.1" 200 922 "http://www.x.de/FFD_index.html" "Mozilla/5.0 (compatible; Konqueror/3.5; Linux) KHTML/3.5.5 (like Gecko) (Kubuntu)"
    Um die dick markierten Zahlen geht es. Da ich noch nicht so gut in PHP bin, bekomme ich kein performantes Script hin.
    Könnt ihr mir bitte helfen?
    Geändert von luxores (20-02-2008 um 17:10 Uhr)

  2. #2
    Registrierter Benutzer Avatar von undefined
    Registriert seit
    01.03.2004
    Beiträge
    1.255
    Also das ist keine gute Idee, Zugriffrechte
    Du solltest eine Extra Log in deinem Gewünschten Format erstellen.
    Und an einem Platz Speichern wo sie zum Account gehört. Das Log Verzeichnis gehört root
    Beispiel:
    Code:
    	LogFormat "<log><date>%{%D}t</date><time>%{%T}t</time><status>%>s</status><agent>%{User-agent}i</agent></log>" accessLog
    	CustomLog /srv/www/htdocs/owner/tmp/Access.xml accessLog
    Siehe Apache Manual
    mfg undefined
    --
    Undefined Behavior (undefiniertes Verhalten) bedeutet meistens etwas ungültiges.
    xhtml Debugger

  3. #3
    Registrierter Benutzer
    Registriert seit
    03.04.2007
    Beiträge
    5
    Zitat Zitat von undefined Beitrag anzeigen
    Also das ist keine gute Idee, Zugriffrechte
    Du solltest eine Extra Log in deinem Gewünschten Format erstellen.
    Und an einem Platz Speichern wo sie zum Account gehört. Das Log Verzeichnis gehört root
    Beispiel:
    Code:
    	LogFormat "<log><date>%{%D}t</date><time>%{%T}t</time><status>%>s</status><agent>%{User-agent}i</agent></log>" accessLog
    	CustomLog /srv/www/htdocs/owner/tmp/Access.xml accessLog
    Siehe Apache Manual
    An die Log-Datei komm ich schon ran, aber ich habe Probleme mit dem RegEx. Ich bekomme keinen Richtigen hin der mir die Daten richtig auswertet. Zum Logformat: Ich werde bei dem Standard bleiben.
    schon mal danke für weitere hilfe.

  4. #4
    Registrierter Benutzer Avatar von undefined
    Registriert seit
    01.03.2004
    Beiträge
    1.255
    Es geht nicht darum das du daran kommst es geht darum das dieses Verzeichnis eine restricted Area ist nur dem Administrator zur Verfügung stehen sollte.
    Mit Custom Log kannst du vor allem den Regexp (Den du im übrigen gar nicht brauchst siehe sprintf() bzw, sscanf() ) sparen.
    mfg undefined
    --
    Undefined Behavior (undefiniertes Verhalten) bedeutet meistens etwas ungültiges.
    xhtml Debugger

  5. #5
    Registrierter Benutzer Avatar von BlueJay
    Registriert seit
    27.08.2004
    Beiträge
    825
    Zitat Zitat von undefined Beitrag anzeigen
    Also das ist keine gute Idee, Zugriffrechte
    Du solltest eine Extra Log in deinem Gewünschten Format erstellen.
    Und an einem Platz Speichern wo sie zum Account gehört. Das Log Verzeichnis gehört root
    Die Provider, z.B. Strato, liefern die Logs aber nun mal in der oblgen Form aus.

    Was man machen kann:
    Das Leerzeichen scheint ein Trenner zu sein, also splittet man damit, erhält seine Zahl an der bestimmten Stelle und summiert den Quatsch auf. - ganz ohne RegEx


    Feddich!

    so long,
    BlueJay
    Geändert von BlueJay (07-04-2007 um 13:22 Uhr)
    Eigentlich ganz einfach, wenn man's weiss!

  6. #6
    Registrierter Benutzer
    Registriert seit
    25.12.2004
    Beiträge
    217
    Hallo Luxores,

    wie Undefined schon richtig gesagt hat, ist es das Einfachste sscanf() zu verwenden. Die Position der Informationen in der jeweiligen Log-Zeile (z. b. an welcher Stelle genau das Datum kommt) wird durch das Log-Format des Apaches bestimmt. Infos dazu findest du hier:
    http://httpd.apache.org/docs/2.0/mod...og_config.html

    In den Kommentaren zu der sscanf()-Funktion findest du sogar ein Codebeispiel zum "Common" Log-Format (ungetestet):
    PHP-Code:
    $log = array();
    $n sscanf(trim($line), '%s %s %s [%[^]]] "%s %s %[^"]" %d %s "%[^"]" "%[^"]"',
        
    $log['ip'],
        
    $log['client'],
        
    $log['user'],
        
    $log['time'],
        
    $log['method'],
        
    $log['uri'],
        
    $log['prot'],
        
    $log['code'],
        
    $log['bytes'],
        
    $log['ref'],
        
    $log['agent']
    ); 
    Grüße,
    nEox

  7. #7
    Registrierter Benutzer
    Registriert seit
    03.04.2007
    Beiträge
    5
    Zitat Zitat von nEox Beitrag anzeigen
    Hallo Luxores,

    wie Undefined schon richtig gesagt hat, ist es das Einfachste sscanf() zu verwenden. Die Position der Informationen in der jeweiligen Log-Zeile (z. b. an welcher Stelle genau das Datum kommt) wird durch das Log-Format des Apaches bestimmt. Infos dazu findest du hier:
    http://httpd.apache.org/docs/2.0/mod...og_config.html

    In den Kommentaren zu der sscanf()-Funktion findest du sogar ein Codebeispiel zum "Common" Log-Format (ungetestet):
    PHP-Code:
    $log = array();
    $n sscanf(trim($line), '%s %s %s [%[^]]] "%s %s %[^"]" %d %s "%[^"]" "%[^"]"',
        
    $log['ip'],
        
    $log['client'],
        
    $log['user'],
        
    $log['time'],
        
    $log['method'],
        
    $log['uri'],
        
    $log['prot'],
        
    $log['code'],
        
    $log['bytes'],
        
    $log['ref'],
        
    $log['agent']
    ); 
    Grüße,
    nEox
    ah danke, jetzt kann ich mir daraus was bauen.
    THX

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •