zurück zur Startseite
  


Zurück XHTMLforum > Webentwicklung (außer XHTML und CSS) > Serveradministration und serverseitige Scripte
Seite neu laden PHP, Dateien auswerten und Zeit?

Antwort
 
LinkBack Themen-Optionen Ansicht
  #1 (permalink)  
Alt 05.10.2009, 19:58
Benutzerbild von laborix
Erfahrener Benutzer
XHTMLforum-Kenner
Thread-Ersteller
 
Registriert seit: 11.12.2005
Beiträge: 1.494
laborix ist ein sehr geschätzer Menschlaborix ist ein sehr geschätzer Menschlaborix ist ein sehr geschätzer Mensch
Standard PHP, Dateien auswerten und Zeit?

Hallo zusammen,

zuerst mal, ich bin Einsteiger was PHP angeht, aber ich würde gerne folgendes richtig begreifen.

Ich lese mit PHP eine Logdatei aus, die 240.000 Zeilen umfasst und eine Größe von 56MB hat. Hintergrund: Abfrage von 70 verschiedenen Browser mit IP-Prüfung.

Zum Auswerten lese ich diese Datei 1 zu 1 in ein Array ein und starte danach eine Auswertung mit

Code:
if (preg_match($suchmuster, $zeichenkette))
{ treffer++; }
Alles funzt wie ich es erwarte. Baue ich eine Zeitabfrage ein, dann brauche ich bei einer einzigen "preg_match" Auswertung für diese Datei ca. 2 Sekunden zum Auswerten.

Prüfe ich aber mit "if" und "elseif" 70 Fallunterscheidungen ab, brauche ich mehr als 25 Sekunden dafür. Warum?

Code:
if (preg_match($suchmuster0, $zeichenkette))
{ treffer++; }
elseif (preg_match($suchmuster1, $zeichenkette))
{ treffer++; }
...
elseif (preg_match($suchmuster70, $zeichenkette))
{ treffer++; }
Hierzu eine weitere Frage.
Gibt es eine Alternative zu "preg_match" und Array? Laut einiger Foreneinträge ist "preg_match" die schnellste Methode zum Auswerten.
__________________
Personal stuff
Mit Zitat antworten
Sponsored Links
  #2 (permalink)  
Alt 05.10.2009, 20:05
Benutzerbild von Gumbo
XHTMLforum-Kenner
 
Registriert seit: 22.08.2004
Ort: Trier
Beiträge: 2.733
Gumbo ist jedem bekanntGumbo ist jedem bekanntGumbo ist jedem bekanntGumbo ist jedem bekanntGumbo ist jedem bekanntGumbo ist jedem bekannt
Standard

Welche Art von Untersuchungen machst du denn? Brauchst du dazu wirklich reguläre Ausdrücke?
__________________
Markus Wulftange
Mit Zitat antworten
Sponsored Links
  #3 (permalink)  
Alt 05.10.2009, 20:19
Benutzerbild von Scheppertreiber
Chaot und Nonkonformist.
XHTMLforum-Kenner
 
Registriert seit: 13.03.2007
Ort: Steinmark im Spessart
Beiträge: 7.458
Scheppertreiber ist ein LichtblickScheppertreiber ist ein LichtblickScheppertreiber ist ein LichtblickScheppertreiber ist ein LichtblickScheppertreiber ist ein Lichtblick
Standard

Es gibt immer verschiedene Arten etwas zu suchen. Einige sind schnell, andere
halt nicht. Wie oft läuft das ? Lohnt eine Optimierung ? Und, woher stammen denn
70 verschiedene Browser ???
__________________
Grüße aus dem Spessart, Joe

{ table-layout: biertischistbesser; }
Der Mausinator
Mit Zitat antworten
  #4 (permalink)  
Alt 05.10.2009, 20:54
Benutzerbild von laborix
Erfahrener Benutzer
XHTMLforum-Kenner
Thread-Ersteller
 
Registriert seit: 11.12.2005
Beiträge: 1.494
laborix ist ein sehr geschätzer Menschlaborix ist ein sehr geschätzer Menschlaborix ist ein sehr geschätzer Mensch
Standard

Zitat:
Zitat von Gumbo Beitrag anzeigen
Welche Art von Untersuchungen machst du denn?
Die Browser meiner Webseitenbesucher ermitteln. Also folgende Prüfung:

Wenn "Browser X", dann Treffer plus eins. Merke IP-Adresse und erst nachdem IP-Adresse wechselt, zähle erneut Treffer plus eins.
(Nicht ganz astrein, da meine Besucher ab und an mehrere Browser verwenden, also hier die IP-Adresse nicht wechselt. Das ist aber ein anderes Problem )



Zitat:
Zitat von Gumbo Beitrag anzeigen
Brauchst du dazu wirklich reguläre Ausdrücke?
Einsteiger keine Ahnung...

Zitat:
Zitat von Scheppertreiber
Wie oft läuft das ?
Je nachdem, wann es mich interessiert

Zitat:
Zitat von Scheppertreiber
Und, woher stammen denn 70 verschiedene Browser ???
Liegt am Thema meiner Webseite und der bisherigen Auswertung mit "grep", "awk", "sort", "unique" und "wc". Die Konsole hat mir 3 Jahre gute Dienste geleistet, jetzt will ich mehr Details.

Beispiel:
Nehme ich eine simple Auswertung auf den String "Safari", so muss ich vorher 8 Strings (Android, Arora, Iron, Chrome, iPhone, OmniWeb, Origyn Web Browser und Shiira) ausklammern, die sich ebenfalls als Safari ausgeben.
__________________
Personal stuff
Mit Zitat antworten
  #5 (permalink)  
Alt 05.10.2009, 22:27
Benutzerbild von Scheppertreiber
Chaot und Nonkonformist.
XHTMLforum-Kenner
 
Registriert seit: 13.03.2007
Ort: Steinmark im Spessart
Beiträge: 7.458
Scheppertreiber ist ein LichtblickScheppertreiber ist ein LichtblickScheppertreiber ist ein LichtblickScheppertreiber ist ein LichtblickScheppertreiber ist ein Lichtblick
Standard

Geht es nur um die Anzahl der Zugriffe nac Browsern würde ich aus jeder Zeile
die Browserkennung (steht, glaube ich, in Klammern) isolieren und, wenn sie noch nicht in meiner Liste ist, neu anlegen. Ansonst inkrementieren. Ich wüßte
vorher nicht alle Kennungen. Mal einen Lauf machen und sehen was herauskommt.
(Dürfte in C in 1 sec durch sein, PHP weiß ich nicht).
__________________
Grüße aus dem Spessart, Joe

{ table-layout: biertischistbesser; }
Der Mausinator
Mit Zitat antworten
  #6 (permalink)  
Alt 05.10.2009, 22:28
Benutzerbild von Pr0g
(^.^)
XHTMLforum-Mitglied
 
Registriert seit: 23.08.2005
Ort: Düsseldorf
Beiträge: 535
Pr0g wird schon bald berühmt werden
Standard

Teste das Script mal auf einem anderen Server, ob dieser ebenfalls so lange braucht.
__________________
Mit Zitat antworten
  #7 (permalink)  
Alt 06.10.2009, 08:50
Benutzerbild von laborix
Erfahrener Benutzer
XHTMLforum-Kenner
Thread-Ersteller
 
Registriert seit: 11.12.2005
Beiträge: 1.494
laborix ist ein sehr geschätzer Menschlaborix ist ein sehr geschätzer Menschlaborix ist ein sehr geschätzer Mensch
Standard

Zitat:
Zitat von Scheppertreiber Beitrag anzeigen
Geht es nur um die Anzahl der Zugriffe nac Browsern würde ich aus jeder Zeile die Browserkennung (steht, glaube ich, in Klammern) isolieren und, wenn sie noch nicht in meiner Liste ist, neu anlegen.
So einfach geht das nicht, da verschiedene Browser mit zwei Browsernamen in der Browserkennung auftauchen:

Browser Shiira meldet sich mit "Shiira und Safari" als Kennung. Opera kann als "MSIE oder Opera" auftauchen, oder je nachdem welche sonstige ID über das Menu vom Besucher eingestellt wurde. Selbst Firefox ist als Kennung nicht ausreichend, da zum Beispiel der Camino Browser die Strings "Camino und Firefox" enthält. Komplex wird das ganze bei Mobile- oder Smartphones

Zitat:
Zitat von Pr0g
Teste das Script mal auf einem anderen Server
Ich habe eine Domain, auf einem Webspace, mit Einschränkung auf ein Memory Limit unter 64MB. Somit entfällt diese Testmöglichkeit, da das Logfile im Array knappe 70MB benötigt. Das geht bei mir nur lokal mit XAMPP.
__________________
Personal stuff
Mit Zitat antworten
  #8 (permalink)  
Alt 06.10.2009, 09:10
Benutzerbild von Scheppertreiber
Chaot und Nonkonformist.
XHTMLforum-Kenner
 
Registriert seit: 13.03.2007
Ort: Steinmark im Spessart
Beiträge: 7.458
Scheppertreiber ist ein LichtblickScheppertreiber ist ein LichtblickScheppertreiber ist ein LichtblickScheppertreiber ist ein LichtblickScheppertreiber ist ein Lichtblick
Standard

Laß doch erstmal die Suche nach bestimmten Broserkennungen weg. Der erste
Schritt wäre das Sammeln und Zählen aller Kennungen. Dann hast Du eine Liste
aller vorkommenden Kennungen.

Das zu analysieren ist erheblich einfacher und es geht Dir keiner verloren.
__________________
Grüße aus dem Spessart, Joe

{ table-layout: biertischistbesser; }
Der Mausinator
Mit Zitat antworten
  #9 (permalink)  
Alt 06.10.2009, 10:23
Benutzerbild von mantiz
Erfahrener Benutzer
XHTMLforum-Kenner
 
Registriert seit: 25.02.2007
Beiträge: 2.843
mantiz kann auf vieles stolz seinmantiz kann auf vieles stolz seinmantiz kann auf vieles stolz seinmantiz kann auf vieles stolz seinmantiz kann auf vieles stolz seinmantiz kann auf vieles stolz seinmantiz kann auf vieles stolz seinmantiz kann auf vieles stolz sein
Standard

Wie sieht denn das Suchmuster und die Zeichenkette aus?

Wie sieht das Script generell aus? Wenn Du möchtest, dann kann ich das Script mal bei mir laufen lassen, 'ne TestDatei müsste ich noch irgendwo auftreiben können.
Wieviele Zeilen hat die Datei?

Da ich das Script nicht kenne, stelle würde ich folgendes machen:

- Datei zeilenweise einlesen und nicht auf einem Schlag
- Alle Überprüfungen auf diese eine Zeile direkt nach dem einlesen anwenden
- Im Standard-Log Format steht die Browserkennung in "" eingeschlossen am Ende der Zeile, also würde ich dem RegEx dies auch mitteilen (\".*<browserkennung>.*\"$/is), evtl. bringt dies etwas Zeitersparnis
Mit Zitat antworten
Sponsored Links
  #10 (permalink)  
Alt 06.10.2009, 10:34
Benutzerbild von Scheppertreiber
Chaot und Nonkonformist.
XHTMLforum-Kenner
 
Registriert seit: 13.03.2007
Ort: Steinmark im Spessart
Beiträge: 7.458
Scheppertreiber ist ein LichtblickScheppertreiber ist ein LichtblickScheppertreiber ist ein LichtblickScheppertreiber ist ein LichtblickScheppertreiber ist ein Lichtblick
Standard

PHP-Code:
char *p, *qbuf[1024], kennung[1024];
FILE *fp;

while( 
fgetsbuf1023fp)){
  if ((
strrchrbuf'\"')) == NULL)
    break;
  *
0;
  if  ((
==  strrchrbuf'\"')) == NULL)
    break;
  
strcpykennungq+1);

  
// Nachsehen ob das schon in der Liste ist.
  // wenn ja: Zähler inkrementieren, wenn nein: neu Anlegen und Zähler := 1

QaD
__________________
Grüße aus dem Spessart, Joe

{ table-layout: biertischistbesser; }
Der Mausinator
Mit Zitat antworten
Sponsored Links
Antwort

Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre 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


Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
php date gibt falsche Zeit aus? sepp88 Serveradministration und serverseitige Scripte 4 30.04.2011 10:07
Dateien mit PHP umbenennen Mr. Tool Serveradministration und serverseitige Scripte 3 03.11.2010 16:33
php Seiten online stellen online Serveradministration und serverseitige Scripte 7 27.03.2009 13:13
Dateien auslagern - Include und PHP ArcVieh Serveradministration und serverseitige Scripte 17 27.03.2008 19:09
.htm dateien mit PHP ViktorR Serveradministration und serverseitige Scripte 2 23.12.2006 20:29


Alle Zeitangaben in WEZ +2. Es ist jetzt 12:34 Uhr.