php.de

Zurück   php.de > Webentwicklung > PHP Einsteiger > PHP Tipps 2007

 
 
LinkBack Themen-Optionen Thema bewerten
Alt 26.02.2007, 19:19  
Erfahrener Benutzer
 
Registriert seit: 23.12.2003
Beiträge: 243
mAy^daY
Standard Daten in XML oder INI speichern

Hi, ich schreibe gerade eine kleine Auswertung für Apache Logfiles. Soweit komme ich auch damit klar, auslesen und darstellen funktioniert wunderbar, jetzt bin ich an dem Punkt angelangt die großen Logdateien in handlichen Stücken bereits fertig ausgewertet zu speichern damit ich nicht jedesmal die komplette Logdatei parsen muß.

Mein erster Ansatz baut auf XML Dateien auf, ich parse die Apache Logdatei und speichere dann die zusammengefassten und bereits aufbereiteten Daten im XML Format ab. Die Aktualisierung prüft dann einfach nur wo der letzte Eintrag der XML steht und fängt dann dort wieder an die neuen Einträge aus der Apachelogdatei einzutragen. Um die XML Daten zu lesen benutze ich die Funktion xmlize(). (XML => Array)

Jetzt kommt die eigentliche Frage, ich könnte die Daten anstatt im XML Format ja auch als INI abspeichern und die parse_ini_file() Funktion benutzen. Der Vorteil wäre das die ganzen XML Strukturen wegfallen und diese Funktion bereits in PHP integriert ist.

Ist es zu empfehlen oder ist das keine gute Idee?
mAy^daY ist offline  
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 26.02.2007, 22:41  
Moderator und Wett-König
 
Benutzerbild von dr.e.
 
Registriert seit: 21.05.2008
Beiträge: 3.633
PHP-Kenntnisse:
Fortgeschritten
dr.e. ist ein Lichtblickdr.e. ist ein Lichtblickdr.e. ist ein Lichtblickdr.e. ist ein Lichtblickdr.e. ist ein Lichtblickdr.e. ist ein Lichtblick
dr.e. eine Nachricht über Skype™ schicken
Standard

Hallo mAy^daY,

ich habe kurz drüber nachgedacht und ich vermute, dass du mit parse_ini_file() schneller an dein Ziel kommst, weil das

a) in C implementiert
und
b) schneller ist, da der XML-Overhead wegfällt.

Nachteil ist jedoch, dass das sicher bei einer gewissen Menge an Daten ineffizient wird, da die beiden Funktionen die komplette Datei in den Speicher läd. Um welche Datenmenge handelt es sich bei deinen Auswertungs-Files?
__________________
Viele Grüße,
Dr.E.

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1. Think about software design before you start to write code!
2. Discuss and review it together with experts!
3. Choose good tools (-> Adventure PHP Framework (APF))!
4. Write clean and reusable software only!
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
dr.e. ist offline  
Alt 26.02.2007, 23:40  
Erfahrener Benutzer
 
Registriert seit: 23.12.2003
Beiträge: 243
mAy^daY
Standard

Also ich hatte vor dann für jeden Monat (bzw. am Jahresende für jedes Jahr) eine eigene INI (bzw. XML) Datei anzulegen. Somit sollte die Datenmenge überschaubar sein und die Performance nicht drunter leiden.

(ähnlich wie bei den gängigen stat-scripten webalizer usw.)

Meine größte Webseite hat derzeit ca. 70.000 Hits (aber das wird ja abgearbeitet und zusammengefasst als INI/XML gespeichert).
Ich gehe davon aus das die größte INI/XML die mit den Hosteinträgen wird (t-ipconnect.de, t-mobile.de, pppool.de, usw. ich speichere hier nur die Domainnamen woher die Leute kommen).

Wenn ich mir das so ansehe...
das ist kaum der rede wert (~ 300 verschiedene Domains bei 70.000 Hits)
also wären etwa 300 Datensätze in einer Datei zu speichern.
mAy^daY ist offline  
Alt 27.02.2007, 02:32  
Erfahrener Benutzer
 
Registriert seit: 13.08.2007
Beiträge: 1.976
KingCrunch befindet sich auf einem aufstrebenden Ast
KingCrunch eine Nachricht über ICQ schicken KingCrunch eine Nachricht über AIM schicken KingCrunch eine Nachricht über MSN schicken KingCrunch eine Nachricht über Yahoo! schicken
Standard

Also, hab das jetzt nur überflogen, aber vielleicht solltest du (solltet ihr) überdenken, dass ini- wie xml-Dateien auch "nur" geparst werden und wo dann euer großer Vorteil ist.

Eine andere Überlegung wäre ein Datenbankserver, der bestimmte Anfragen im System schon beschleunigt. Ansonsten seh ich keinerlei Vorteile bestimmte Umgebungen einfach nur umzuschreiben
__________________
Nicht jeder Fehler ist ein Bug.
KingCrunch ist offline  
Alt 27.02.2007, 09:37  
Erfahrener Benutzer
 
Registriert seit: 23.12.2003
Beiträge: 243
mAy^daY
Standard

Also der Vorteil wäre das die Daten um ein vielfaches kleiner sind und gezielt für einen Zeitraum rausgegriffen werden.

In den INI/XML Dateien stehen die Daten dann etwa in diesem Format
Code:
...
<tag value="1">
  <hits>30</hits>
  <besucher>12</besucher>
  <traffic>1557</traffic>
</tag>
... usw. bis zum Ende des Monats...
... dann die Zusammenfassung der ganzen Tage ...
<stunde value="0">
  <hits>30</hits>
  <besucher>12</besucher>
  <traffic>1557</traffic>
</stunde>
... usw. bis Stunde 23
Ich denke diese Datei kann ja nicht größer werden, da der Monat maximal 31 Tage hat und ein Tag 24 Stunden. Also wären nur die Besucherhosts (Domains) eine variable Größe. Diese würde ich dann in einer extra INI/XML Datei speichern.

Das ganze in eine Datenbank packen wäre auch eine gute Idee.
mAy^daY ist offline  
Alt 27.02.2007, 09:47  
Erfahrener Benutzer
 
Registriert seit: 23.08.2007
Beiträge: 1.510
M3g4Star befindet sich auf einem aufstrebenden Ast
Standard

Also es kommt natürlich immer darauf an inwiefern du diese Statistiken dann benötigst.
Eine DB wäre schon sinnvoll weil du dir dann einfach ein Webinterface zusammenstellen kannst und damit via simplen SQL deine Zeiträume variabel gestellten kannst.

Dann könntest das auch gleich in PDF exportieren usw. aber wie schon gesagt ... Inwiefern du das benötigst ist die andere Frage.
M3g4Star ist offline  
Alt 27.02.2007, 10:14  
Erfahrener Benutzer
 
Registriert seit: 23.12.2003
Beiträge: 243
mAy^daY
Standard

Ich hätte dann zum Thema noch eine andere Frage, und zwar ist es sinnvoll die IP Adressen mit gethostbyaddr() aufzulösen?

(HostnameLookup in der Apacheconfig hatte ich bisher auf ON, durch Google habe ich erfahren das man dies besser OFF lassen sollte)
mAy^daY ist offline  
Alt 27.02.2007, 11:36  
Erfahrener Benutzer
 
Registriert seit: 21.05.2008
Beiträge: 9.937
Zergling-new wird schon bald berühmt werden
Standard

Zitat:
Zitat von mAy^daY
(HostnameLookup in der Apacheconfig hatte ich bisher auf ON, durch Google habe ich erfahren das man dies besser OFF lassen sollte)
Mit welcher Begründung? Sei vorsichtig bei unbegründeten Vorschlägen, die du irgendwo im Netz findest, es wird auch viel Mist verzapft.

Zum eigentlich Thema:
INI sind ja Konfigurations-Files, vom Sinn her also eigentlich kein Datenspeicher-Typ, wie XML, CSV oder eine Datenbank.

INI:
Vorteil:
simple Datenstrukturen,
schnelles Parsen
Nachteil:
Möglicherweise zu simple Datenstruktur, keine Mehrdimensionalität, wie du sie vielleicht benötigen würdest (für n Tage und m Stunden),
nicht implizit, dass das Format Daten enthält (man könnte diese Daten auch als Konfiguration für die Auswertung sehen, ist aber etwas weit hergeholt finde ich)
Auswertung/Statistik manuell

XML:
Vorteil:
Komplexe Datenstrukturen möglich,
kompatibelstes/universellstes Format
Nachteil:
Großer Overhead (300 Einträge sollten aber verkraftbar sein),
Auswertung/Statistik manuell

CSV:
Vorteil:
kompatibles Format,
simple Datenstrukturen,
schnell zu parsen
Nachteil:
Auswertung/Statistik manuell
nur 2-dimensional wie INI

Datenbank:
Vorteil:
Komplexe Datenstrukturen möglich (JOINs, Sub-SELECTs),
sehr schnell,
Auswertung/Statistik automatisch (das Query musst du natürlich trotzdem noch selbst erstellen)
Nachteil:
Du belastest die Datenbank mit Log-Einträgen


Ich würde mich letztlich für die Datenbank entscheiden. Wenn es darum geht häufig Daten auszuwerten, ist diese letztlich am effektivsten.
Falls du die Daten für weitere externe Tools benötigst, kannst du den Inhalt immernoch in ein XML-File rausparsen.
Zergling-new ist offline  
Alt 27.02.2007, 11:57  
Erfahrener Benutzer
 
Registriert seit: 23.12.2003
Beiträge: 243
mAy^daY
Standard

Ich werde mal die Lösung mit Datenbank als Speicher in Angriff nehmen. Wenn der Monat vorbei ist werde ich eine Statistik als PDF generieren, diese ändert sich ja nichtmehr, somit wäre die Datenbank hauptsächlich nur mit den aktuellen Daten belastet.

Danke M3g4Star für die PDF Idee, finde ich Klasse!
Danke den anderen für die Hilfe.

Zitat:
Zitat von Zergling
Mit welcher Begründung? Sei vorsichtig bei unbegründeten Vorschlägen, die du irgendwo im Netz findest, es wird auch viel Mist verzapft.
Hmm eine Begründung wird fast nie angegeben, das einzige das ich gefunden habe ist das der Apache sich zulange durch Verzögerungen der DNS Anfrage damit aufhält. In wie weit das stimmt kann ich nicht beurteilen (so viele Hits hab ich dann auch wieder nicht).
Zitat:
DNS lookups can be quite time-consuming, however, especially if the name-servers for the ipaddress fail to respond. For the logfiles, hostname lookups are better done by a separate logfile-parser.
mAy^daY ist offline  
Alt 27.02.2007, 12:30  
Erfahrener Benutzer
 
Registriert seit: 21.05.2008
Beiträge: 9.937
Zergling-new wird schon bald berühmt werden
Standard

Na gut das ist doch schonmal eine plausible Begründung.
Zergling-new ist offline  
 


Themen-Optionen
Thema bewerten
Thema bewerten:

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 an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
geladene daten aus einer schleife in die datenbank speichern Bonaparte PHP Tipps 2008 2 05.09.2007 22:26
daten aus iframe speichern fragnicht JavaScript, Ajax und mehr 0 06.08.2007 17:29
Daten in DB speichern Matthiasnet PHP Tipps 2006 3 04.09.2006 19:24
Daten über Formular eingeben und in Tabelle speichern. WIE? PHP Tipps 2006 20 10.02.2006 16:04
Daten speichern PHP Tipps 2006 21 06.02.2006 23:04
Daten aus Datenbank sinnvoll speichern PHP Tipps 2006 15 02.02.2006 19:54
Speichern sensibler Daten CC84 PHP Tipps 2006 4 18.01.2006 21:54
Daten temporär speichern picco PHP Tipps 2005-2 14 13.08.2005 01:07
Daten speichern - Überlegungen zum Format Datenbanken 12 24.05.2005 19:38
Formular - Daten in MySQL Datenbank speichern PHP Tipps 2005 13 04.05.2005 18:12
Daten von php in Datei wie am besten Speichern ? PHP Tipps 2005 6 09.02.2005 16:48
Wo Daten für Datenbankverbindung speichern? Malfunction Datenbanken 11 08.02.2005 23:30
[Erledigt] Daten auslesen - Daten hinzufügen - Daten Speichern PHP Tipps 2004-2 1 04.12.2004 10:59
binäre daten in einer php-datei speichern robo47 PHP Tipps 2004-2 3 07.11.2004 17:43
Daten in einer Textdatei Speichern PHP Tipps 2004 3 19.08.2004 17:13

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
ini oder xml, xml ini, xml overhead, xml oder ini, daten in xml speichern, xml statt ini, ini xml, ini.xml, ini to xml, ini speichern, xml als ini, als .ini speichern, xml to ini, ini or xml, ini vs xml, http://www.php.de/php-tipps-2007/43553-daten-xml-oder-ini-speichern.html, vergleich xml ini, als ini speichern, .ini speichern, vergleich ini xml

Alle Zeitangaben in WEZ +1. Es ist jetzt 10:08 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum

Creative Commons License
Dieser Inhalt ist unter einer Creative Commons-Lizenz lizenziert.