php.de

Zurück   php.de > Webentwicklung > PHP-Fortgeschrittene

PHP-Fortgeschrittene Arbeiten mit PHP ohne Einschränkungen

Antwort
 
LinkBack Themen-Optionen Thema bewerten
Alt 31.05.2004, 12:36  
Gast
 
Beiträge: n/a
Standard große XML-Datei in annehmbarer Zeit durchsuchen

Hallo,
ich versuche schon seit geraumer Zeit eine XML-Datei von ca. 4MB größe in angemessener Zeit von ca. 2-4sec zu durchsuchen. Bisher hatte ich leider weder mit dem Suchalgo noch mit der benötigten Zeit erfolg. Der durchlauf dauerte ca. 10sec. auf einem 1GHz Rechner.

Es handelt sich um folgende Datenstruktur:

<Bauteilkatalog>

<Bauteil ID="SIC22323">
<Details>
<Beschreibung1>Beschreibung1 des Bauteils</Beschreibung1>
<Beschreibung2>Beschreibung2 des Bauteils</Beschreibung2>
<Einsatz>Gerät 4223</Einsatz>
</Details>
<PDF>
<Bauvorschrift>CBV\SIC22323.pdf</Bauvorschrift>
<Datenblatt>CDB\SIC22323.pdf</Datenblatt>
</PDF>
</Bauteil>

<Bauteil ID="SIC11323">
<Details>
<Beschreibung1>Beschreibung1 des Bauteils</Beschreibung1>
<Beschreibung2>Beschreibung2 des Bauteils</Beschreibung2>
<Einsatz>Gerät 1113</Einsatz>
</Details>
<PDF>
<Bauvorschrift>CBV\SIC11323.pdf</Bauvorschrift>
<Datenblatt>CDB\SIC11323.pdf</Datenblatt>
</PDF>
</Bauteil>

</Bauteilkatalog>

Es handelt sich also um einen Bauteilkatalog mit ca. 4000 eingetragenen Bauteilen.
Dafür gibt es eine Web-Oberfläche, die die Eingabe eines Suchbegriffs ermöglicht. Wenn jetzt jemand z. B. "Gerät 1113" eingeben sollte, müssten ALLE <Details> des Bauteiles SIC11323 sowie die Tags unter <PDF> auf dieser Webseite als Suchergebnis erscheinen.

Bisher machte ich folgenden Ansatz:

1. Benutzte Standard-Parser mit startElement, endElement, cdata
2. übergab die Variable $startElement an Funktion cdata
3. Zwischenspeichern aller Elemente eines Bauteils (also von <Bauteil ID...> bis </Bauteil> in ein Array.
3. überprüfte jede Zeile in der Funktion cdata auf den Suchinhalt
4. Wenn Suchinhalt ingendwann bis Ende des Bauteils gefunden, übergebe Array an Zeigefunktion

Da aber die Cdata Funktion pro Tag mehrmals aufgefufen wird, bekomme ich keine sinnvolle Ergebnisse.
Weiterhin dauert der Suchdurchlauf durch das Zwischenspeichern und vermutlich durch das durchsuchen der Strings eine ganz schön lange Zeit.

Würde mich sehr freuen wenn mir jemand zu diesem Problem einen hilfreichen Tip hättte... Auch wenn es nicht schneller geht, eine idee für einen Suchalgo wäre klasse.

Danke,
Joachim Schneider
  Mit Zitat antworten
Sponsor Mitteilung
PHP Code Flüsterer

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

Alt 31.05.2004, 12:46  
Gast
 
Beiträge: n/a
Standard

Mein Tipp wäre wohl das einmal einlesen und dann ab damit in eine Datenbank. Vermute aber dass das nicht so einfach geht bei dir weil andere Programme auch da drauf schreiben / editieren...

Google sagt das hier bei "PHP XML Parser" -->
http://www.ideenreich.com/programmie...hp-expat.shtml

Klingt intressant! - EDIT: Oops wenn ich das richtig überflogen habe verwendest du das bereits!
  Mit Zitat antworten
Alt 31.05.2004, 13:05  
Gast
 
Beiträge: n/a
Standard

Ich habe gehört, das dieses Script sehr schnell arbeitet:

http://www.media-palette.de/tools/xml-line/

wilko
  Mit Zitat antworten
Alt 02.06.2004, 12:20  
Gast
 
Beiträge: n/a
Standard Danke...

Danke für euere Beiträge. Hab mir vor Allem die Klasse XML-Line etwas näher angeschaut. XML-Line ist wie gemacht für das Auffinden von Informationen in XML-Dateien und gibt als Suchergebnis ein Array zurück, über dieses man nahezu alle weiter Informationen über den Suchbegriff bekommt. Zudem hat es ein gutes, deutsches Tutorial.
Der nachteil ist aber die Geschwindigkeit der Klasse. Für eine Datei mit 2MB XML-Code muss man auf einer 1GHz Maschine mind. 30sec warten.
Das ist doch etwas zu lange.
Für kleine Dateien ist man damit aber weitaus besser bedient als mit expat.
  Mit Zitat antworten
Alt 02.06.2004, 14:53  
Gast
 
Beiträge: n/a
Standard Re: Danke...

Zitat:
Zitat von Joschy
Der nachteil ist aber die Geschwindigkeit der Klasse. Für eine Datei mit 2MB XML-Code muss man auf einer 1GHz Maschine mind. 30sec warten. Das ist doch etwas zu lange.
Mein Tip: Shellscript (PHP gibt es ab 4.3.0 auch als CLI) via Cron. Es muß nicht immer alles Online sein...
  Mit Zitat antworten
Alt 02.06.2004, 15:44  
Clan
Gast
 
Beiträge: n/a
Standard

wenn du immer die gleiche anzahl an spalten hast in nem produkt
dann könntest du es auch hiermit machen.

Code:
<?php
$string = `grep -b10 '<Bauteil ID="SIC22323">' test.xml`;
echo $string;
?>
nachteil, sobald du ne spalte hinzufügst oder ne zeile hinzukommt läufts nicht mehr korrekt

am besten ist es natürlich und auch performanter, wenne die daten inne mysql db reinpumpst und dann suchst
  Mit Zitat antworten
Antwort


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
[Erledigt] Hochgeladene Datei wird doppelt abgelegt thecracked PHP Tipps 2008 3 01.07.2008 16:31
Datei nur einmal gleichzeitig aufrufen daniel2000 Scriptbörse 2 04.02.2008 11:30
Datei durchsuchen Wöllchen Beitragsarchiv 3 02.03.2006 22:23
Datei durchsuchen nach 3. semikolon tomx992 PHP Tipps 2006 7 05.01.2006 17:11
[Erledigt] Mit PHP die aktuellen Zugriffe auf Datei feststellen inkl IP PHP-Fortgeschrittene 4 21.10.2005 20:58
Datei auf FTP-Server ändern ohne lokal abzuspeichern faux PHP-Fortgeschrittene 11 02.09.2005 11:54
Datei durchsuchen gala PHP Tipps 2005 16 01.06.2005 15:41
Ordner Struktur auslesen bestimmte datei finden .... silverghost PHP Tipps 2005 3 24.05.2005 13:55
[Erledigt] Verszeichnis nach einer bestimmten Datei durchsuchen PHP Tipps 2005 2 14.02.2005 15:45
Datei mit php erzeugen Stümper PHP Tipps 2004 4 12.10.2004 12:51
php und ftp PHP Tipps 2004 4 07.10.2004 09:58
[Erledigt] datei editieren PHP Tipps 2004 1 10.09.2004 20:33
Aus PHP Datei HTML Seiten schliessen? PHP Tipps 2004 1 27.08.2004 12:51
(ich schonwieder) Link seite automatisch imported_DJ Nuno PHP Tipps 2004 14 19.08.2004 17:42
Wie kann ich eine PHP Datei in eine HTML Datei umwandeln PHP Tipps 2004 2 12.08.2004 18:04

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
xml datei durchsuchen, große xml datei, große xml dateien öffnen, xml durchsuchen, xml dateien durchsuchen, große xml dateien bearbeiten, große xml datei öffnen, php xml datei durchsuchen, php große xml, xml geschwindigkeit, xml file durchsuchen, grosse xml datei, größe xml, php große xml dateien, xml grösse, grosse xml dateien, große xml dateien öffnen php, große xml dateien, php xml geschwindigkeit, xml datei größe

Alle Zeitangaben in WEZ +2. Es ist jetzt 20:35 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.