php-resource



Zurück   PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr > Entwicklung > PHP Developer Forum
 

Login

 
eingeloggt bleiben || php-forumjetzt anmelden
 

PHP Developer Forum Hier habt ihr die Möglichkeit, eure Skriptprobleme mit anderen Anwendern zu diskutieren. Seid so fair und beantwortet auch Fragen von anderen Anwendern. Dieses Forum ist sowohl für ANFÄNGER als auch für PHP-Profis! Fragen zu Laravel, YII oder anderen PHP-Frameworks.

Antwort
 
LinkBack Themen-Optionen Thema bewerten
  #1 (permalink)  
Alt 08-04-2007, 11:45
micronax
 Registrierter Benutzer
Links : Onlinestatus : micronax ist offline
Registriert seit: Jan 2006
Beiträge: 602
micronax ist zur Zeit noch ein unbeschriebenes Blatt
micronax eine Nachricht über MSN schicken micronax eine Nachricht über Skype™ schicken
Question Extrem (Ressourcen) aufwendiger Prozess

Hallo,
ich arbeite derzeit an einem Projekt für unsere Schulbücherei. Leider gibt es da ein Problem.

Am besten ich beschreibe erstmal das komplette Projekt:

1. Ein auf Visual Basic basierendes Programm konvertiert eine Access-Datenbank in XML.

2. Das XML-File wird per FTP auf den Webserver geladen

3. Der Webserver soll alle XML-Einträge mit der MySQL-Datenbank abgleichen.

Das funktioniert auch alles so weit

Mein Problem ist jetzt, dass die XML-Datei 159.914 Zeilen hat. Tendenz steigend. (Das sind ca. 5,6 MB)

Wenn ich diese Datei jetzt einfach so verarbeiten lasse, erhalte ich (natürlich) die Meldung, dass das Memory_Limit überschritten wurde. Also habe ich ne php.ini ins Directory gelegt memory_limit = 30M und max_execution_time = -1

Daraufhin läd die Seite ca. 30sekunden und zeigt mir dann einen Internal Server Error an.

Meine Fragen:

1. Woran könnte das liegen (ich habe anscheinend keinen Zugriff auf den Errror-Log, Error_reporting ist ausreichend gesetzte -> Trozdem nur der 500er.)?

2. Sollten noch andere Einträge an der php.ini geändert werden, sodass es funktionieren könne

3. (FALLS NICHT Wie lasse ich php die Datei am schlausten zerlegen, sodass immer nur so viel von der XML-Datei geparst wird, wie der Server aushält.

(Anmerkung: Ich habe den gleichen Vorgang zum Test mit einer XML-Datei mit ca. 100 Zeilen ausprobiert: Kein Problem)

Danke im Vorraus


Regards,
Fabian Golle
Micronax Systems
__________________
--> Micronax <--
Mit Zitat antworten
  #2 (permalink)  
Alt 08-04-2007, 13:29
pekka
 PHP Master
Links : Onlinestatus : pekka ist offline
Registriert seit: Jun 2001
Ort: Köln
Beiträge: 6.608
pekka befindet sich auf einem aufstrebenden Ast
Standard

Ich glaube nicht, daß der Provider erlaubt, die Limits per php.ini zu verändern. Damit wäre der Sinn der Limitierung ja komplett hinfällig.

Ohne error-Log keine Chance auf vernünftige Hilfe! Hoster fragen.
Mit Zitat antworten
  #3 (permalink)  
Alt 08-04-2007, 13:31
micronax
 Registrierter Benutzer
Links : Onlinestatus : micronax ist offline
Registriert seit: Jan 2006
Beiträge: 602
micronax ist zur Zeit noch ein unbeschriebenes Blatt
micronax eine Nachricht über MSN schicken micronax eine Nachricht über Skype™ schicken
Standard

Doch. Strato erlaubt das.. komischerweise.. Ich hab in der im Ordner angelegten php.ini das Memory_limit auf 60M gesetzt und es hat geklappt.

Hoster wird angemailt.

Thx

Micronax
__________________
--> Micronax <--
Mit Zitat antworten
  #4 (permalink)  
Alt 08-04-2007, 17:57
penizillin
 PHP Guru
Links : Onlinestatus : penizillin ist offline
Registriert seit: Feb 2004
Beiträge: 10.166
penizillin ist zur Zeit noch ein unbeschriebenes Blatt
Standard Re: Extrem (Ressourcen) aufwendiger Prozess

Zitat:
Original geschrieben von micronax
3. Der Webserver soll alle XML-Einträge mit der MySQL-Datenbank abgleichen.
beschreibe kurz, wie du das machst.
Mit Zitat antworten
  #5 (permalink)  
Alt 08-04-2007, 17:59
micronax
 Registrierter Benutzer
Links : Onlinestatus : micronax ist offline
Registriert seit: Jan 2006
Beiträge: 602
micronax ist zur Zeit noch ein unbeschriebenes Blatt
micronax eine Nachricht über MSN schicken micronax eine Nachricht über Skype™ schicken
Standard

Tja.. ehem..

Der Server nimmt jeden der 15.000 XML-Enträgen und guckt, ob dieser bereits in der DB vorhanden ist, wenn ja -> keine Aktion, wenn nicht --> Eintragen

(Ich weiß, nicht gerade die Ressourcensparende Methode, aber wie sonst?)

Micronax
__________________
--> Micronax <--

Geändert von micronax (08-04-2007 um 18:07 Uhr)
Mit Zitat antworten
  #6 (permalink)  
Alt 08-04-2007, 18:19
penizillin
 PHP Guru
Links : Onlinestatus : penizillin ist offline
Registriert seit: Feb 2004
Beiträge: 10.166
penizillin ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Zitat:
Der Server nimmt jeden der 15.000 XML-Enträgen ...
und wie geht das?
Mit Zitat antworten
  #7 (permalink)  
Alt 08-04-2007, 18:21
micronax
 Registrierter Benutzer
Links : Onlinestatus : micronax ist offline
Registriert seit: Jan 2006
Beiträge: 602
micronax ist zur Zeit noch ein unbeschriebenes Blatt
micronax eine Nachricht über MSN schicken micronax eine Nachricht über Skype™ schicken
Standard

Ähm.?

PHP-Code:
$xml = new Xml;
$out $xml->parse('../littera.xml');
foreach(
$out["buch"] as $buch) {



Das ist eine XML-Klasse, die ich mit foreach durchlaufen lasse.
__________________
--> Micronax <--
Mit Zitat antworten
  #8 (permalink)  
Alt 08-04-2007, 18:22
penizillin
 PHP Guru
Links : Onlinestatus : penizillin ist offline
Registriert seit: Feb 2004
Beiträge: 10.166
penizillin ist zur Zeit noch ein unbeschriebenes Blatt
Standard

und wie funktioniert diese klasse?
Mit Zitat antworten
  #9 (permalink)  
Alt 08-04-2007, 18:26
micronax
 Registrierter Benutzer
Links : Onlinestatus : micronax ist offline
Registriert seit: Jan 2006
Beiträge: 602
micronax ist zur Zeit noch ein unbeschriebenes Blatt
micronax eine Nachricht über MSN schicken micronax eine Nachricht über Skype™ schicken
Standard

Die Klasse ist nicht von mir. Die, die ich geschrieben hab' war leider nicht funktionstüchtig...

Hab' den Quelltext mal hier gepostet

Sie öffnet die XML-Datei und geht Eintrag für EIntrag durch, ruft die sub-nodes ab, und liefert die in einem 2-diminsionellen Array wieder.

Micronax
__________________
--> Micronax <--
Mit Zitat antworten
  #10 (permalink)  
Alt 08-04-2007, 18:37
penizillin
 PHP Guru
Links : Onlinestatus : penizillin ist offline
Registriert seit: Feb 2004
Beiträge: 10.166
penizillin ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Zitat:
Die Klasse ist nicht von mir.
kein grund es nicht zu wissen. deine klasse benutzt sax, und das wollte ich hören.

es ist tatsächlich falsch, die gesamte xml datei einzulesen, bevor man mit der auswertung beginnt, wenn man nicht mehrere datensätze gleichzeitig zur auswertung benötigt (bei dir wohl nicht der fall). mit sax kann man es viel effizienter auf beliebig großen dateien realisieren, und das mit minimalem speicherverbrauch.

informiere dich darüber und schreibe einen eigenen sax-handler, der mit vorgegebener speicherschranke alle zig-tausend xml einträge _nach einander_ einliest und verarbeitet.
OffTopic:
zu der bekannten "copy-paste-programmierung" kommt immer öfter die "ich-habs-aus-dem-internet-programmierung".
Mit Zitat antworten
  #11 (permalink)  
Alt 08-04-2007, 18:39
micronax
 Registrierter Benutzer
Links : Onlinestatus : micronax ist offline
Registriert seit: Jan 2006
Beiträge: 602
micronax ist zur Zeit noch ein unbeschriebenes Blatt
micronax eine Nachricht über MSN schicken micronax eine Nachricht über Skype™ schicken
Standard

*grml*
__________________
--> Micronax <--

Geändert von micronax (08-04-2007 um 18:41 Uhr)
Mit Zitat antworten
  #12 (permalink)  
Alt 08-04-2007, 21:34
micronax
 Registrierter Benutzer
Links : Onlinestatus : micronax ist offline
Registriert seit: Jan 2006
Beiträge: 602
micronax ist zur Zeit noch ein unbeschriebenes Blatt
micronax eine Nachricht über MSN schicken micronax eine Nachricht über Skype™ schicken
Standard -.-

Ich kapier das nicht. Ich habe jetzt 3 Stunden an diesem XML-Parser-Kram rumgehangen und es nicht hinbekommen. Kannst du oder jemand anderes sachkundiges mir nicht nochmal einen Tipp geben?

Micronax
__________________
--> Micronax <--
Mit Zitat antworten
  #13 (permalink)  
Alt 08-04-2007, 22:33
ghostgambler
 Master
Links : Onlinestatus : ghostgambler ist offline
Registriert seit: Jul 2004
Ort: DE - NRW
Beiträge: 4.620
ghostgambler ist zur Zeit noch ein unbeschriebenes Blatt
Standard Re: -.-

Die Contribute Notes klingen interessant, damit würd ich mich mal beschäftigen (ob es ne Lösung für dein Problem ist, weiß ich allerdings nicht)
http://de3.php.net/manual/de/ref.xml.php#38356



http://sourceforge.net/projects/saxy-xmlparser/
Mit Zitat antworten
  #14 (permalink)  
Alt 09-04-2007, 19:57
penizillin
 PHP Guru
Links : Onlinestatus : penizillin ist offline
Registriert seit: Feb 2004
Beiträge: 10.166
penizillin ist zur Zeit noch ein unbeschriebenes Blatt
Standard

jedes mal wenn ein tag geöffnet wird und du feststellst, es ist ein neuer datensatz, schreibst du seinen inhalt und alle kinder in einen buffer. wird dieser tag geschlossen, weißt du - datensatz komplett, kann mit der db abgeglichen werden oder wasauchimmer. danach buffer löschen nicht vergessen. so wird dein speicher nie mehr als einen datensatz auf einmal halten müssen.
Mit Zitat antworten
  #15 (permalink)  
Alt 13-04-2007, 15:12
micronax
 Registrierter Benutzer
Links : Onlinestatus : micronax ist offline
Registriert seit: Jan 2006
Beiträge: 602
micronax ist zur Zeit noch ein unbeschriebenes Blatt
micronax eine Nachricht über MSN schicken micronax eine Nachricht über Skype™ schicken
Standard

Soo.. genauso hab' ich's jetzt gemacht.. Und siehe da: Er machts...

Aber: leider nur ca. 3700 Einträge. Anschließend bricht er einfach so, ohne eine Fehlermeldung ab.

max_execution_time und memory_limit sind ausreichend eingestellt.
__________________
--> Micronax <--
Mit Zitat antworten
Antwort

Lesezeichen


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 

Themen-Optionen
Thema bewerten
Thema bewerten:

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 an


PHP News

Warum Texterstellung mit künstlicher Intelligenz richtig gut ist
Warum Texterstellung mit künstlicher Intelligenz richtig gut istKünstliche Intelligenz ist dabei, die Welt zu erobern. Die größten Unternehmen entwickeln Systeme, die einen Text für Sie schreiben können. Und sie machen das sehr gut.

05.01.2022 | Berni

Vorteile eines flexiblen ERP Systems
Vorteile eines flexiblen ERP SystemsEin flexibles ERP System bietet in allen Unternehmensbereichen die Grundlage für eine erfolgreiche Verwaltung, Organisation und Planung aller Prozesse.

01.12.2021 | Berni


 

Aktuelle PHP Scripte

Homepagetools 2022

Kostenloses Gästebuch und Homepagetools für die eigene Homepage. Bei GuxDu kann man sich kostenlos die Websitetools auf die vorhandene Website einbauen. Zudem kann man bei GuxDU auch eine eigene Homepage mit 3D Effekten erstellen. GuxDu ist kostenlos.

29.04.2022 freepler | Kategorie: PHP/ Gaestebuch
SF-Shopsystem V1.0

Hier haben wir ein einzigartiges Shopsystem in PHP. Die Anzahl der Artikel ist unbegrenzt, einfach zu bedienen und erklärt sich. Ausführliche Beschreibung weiter unten.

28.04.2022 Speedcrawler | Kategorie: PHP/ Shops
Anzeigen Markt mit PayPal Bezahl System

Anzeigen Markt Script mit PayPal Bezahl System Der Benutzer hat die Möglichkeit sofort nach Bezahlung mit PayPal seine Anzeigen zu schalten, je nach seinem Guthaben.

27.04.2022 Webace_de | Kategorie: PHP/ Anzeigenmarkt
 Alle PHP Scripte anzeigen

Alle Zeitangaben in WEZ +2. Es ist jetzt 15:39 Uhr.