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.

Erstelle ein Benutzerkonto oder melde Dich an, um zu kommentieren

Du musst ein Benutzerkonto haben, um einen Kommentar verfassen zu können

Benutzerkonto erstellen

Neues Benutzerkonto für unsere Community erstellen. Es ist einfach!

Neues Benutzerkonto erstellen

Anmelden

Du hast bereits ein Benutzerkonto? Melde Dich hier an.

Jetzt anmelden

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...