Zum Inhalt springen

Empfohlene Beiträge

Geschrieben

Hi zusammen,

derzeit lade ich mit einem PHP-Script remote XML/CSV Dateien via cURL auf meinen Server.

  • V-Server
  • Linux
  • php.ini : memory_limit = 80M (nicht zur Laufzeit änderbar)

Download-URL's sehen etwa so aus:

http://download.from.anywhere/?aid=123&type=xml&encoding=utf-8
Das Ganze funktioniert auch soweit wunderbar - zumindest bis zu einer gewissen Grösse (ca. 15MB) der Remote-Datei (deren Grösse ist im Voraus nicht bekannt). Ist die Download-Datei zu gross gibt es regelmässig Fehler dieser Art:
Fatal error: Out of memory (allocated 27787264) (tried to allocate 25392290 bytes) in /home/www/PFAD_ZUM_SCRIPT on line 1234

Kennt jemand eine Möglichkeit die Download-Datei in Einzelschritten von beispielsweise je 10MB herunterzuladen, auf meinem Server wieder zusammenzusetzen um sie dann weiter zu verabeiten?

Vielleicht mit einer cURL-Option die ich bisher übersehen habe, fsockopen oder what ever. Irgendwie fehlt mir im Moment der Schubs in die richtige Richtung. Sehe den Wald vor lauter Bäumen nicht mehr ... Thx im Voraus

Deboril

Geschrieben

würden die XML Dateien in PHP ebenfalls weiterverarbeitet werden?

Ich bin zwar in PHP nicht so fit, würde aber vermuten, dass bei der Verwendung der DOM API es dann ebenfalls zu Speicherproblemen kommt.

Wird die Datei bei jedem Aufruf neu generiert? Dann würde es eh denke ich mal schwer werden die Datei in Stücken zu laden.

Geschrieben

Ich bin zwar in PHP nicht so fit, würde aber vermuten, dass bei der Verwendung der DOM API es dann ebenfalls zu Speicherproblemen kommt.

Ich denke, das Ding komplett in den Speicher nudeln ist nicht sinnvoll. Hier würde man wohl SAX verwenden und immer stückweise parsen

Geschrieben

@dku @flashpixx - die Weiterverarbeitung ist schon sichergestellt. in der Tat wird die dann vorhandenen Datei in handliche Häppchen zerlegt und diese dann im Anchluss in einer schleife mit nem xml_parser bearbeitet. Sobald die Datei - derzeit funzt das mit Grössen bis 2GB - vorhanden ist geht das auch auf nem V-Server.

Derzeit werden die Dateien manuell nach lokal heruntergeladen und dann mit FTP auf den Server kopiert - dann halt der Splitter/Parser manuell anschoben.

Ich werde morgen mal die Variante von lupo49 mit der CURLOPT_RANGE Option versuchen - wobei ich mir da noch nicht ganz sicher wie das mit der EOF Erkennung funzen könnte weil ich halt im Vorfeld die Dateigrösse nicht kenne.

Poste dann wieder - bis dahin erstmal meinen besten Dank

Deboril

Geschrieben
Sobald die Datei - derzeit funzt das mit Grössen bis 2GB - vorhanden ist geht das auch auf nem V-Server.

Wäre es nicht sinnvoll vielleicht das Dateiformat einmal zu überdenken, wenn Du solche Datengrößen hast. Du schleppst natürlich bei XML eine Menge Overhead mit herum.

Geschrieben

@flashpixx - wohl wahr und gelassen ausgesprochen. Es handelt sich dabei um Produktdaten die als CSV oder XML ausgeliefert werden. Auf das Format habe ich keinen Einfluss und muss nehmen was kommt. Und wenn der Kunde die Möglichkeit für XML-Import wünscht, weil sich das besser "anhört" als schnöder CSV-Import - was soll man machen?

Mal abgesehen davon dass der Datenaustausch innerhalb verschiedener Systeme - wie aktuell gefordert - mit XML dann schon so seine Vorteile hat. OK - das der Kunde derzeit auf nem V-Server hostet lasse ich mal unkommentiert. :)

Also, werde mal weiter machen und ggf. erfolgreichen Vollzug melden :cool:

Deboril

Geschrieben

... - wobei ich mir da noch nicht ganz sicher wie das mit der EOF Erkennung funzen könnte weil ich halt im Vorfeld die Dateigrösse nicht kenne.

Du benötigst nicht die absolute Größe der Datei. Bei dem letzten Teilchunk lässt du den Endwert der Range offen.

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...