Rolf b: Demo: JavaScript und Binärdateien, Multimedia

Beitrag lesen

Und eines zeigt sich an den inhärenten Problemen von multipart-formdata auf jeden Fall: es ist nicht für den Transfer großer Datenmengen erfunden worden.

Beim Upload mit multipart/form-data ist es nicht möglich, einem Part weitere Eigenschaften hinzuzufügen oder gegebene Eingenschaften zu ändern.

Was hat mein Satz mit Deiner Stellungnahme zu tun? Der Aussagenscope beider Sätze scheint mir 100% disjunkt.

Aber guck Dir meinen Serializer an, (...) In Perl sieht das dann so aus:

(...) pack('NC',0,0) (...) pack('NC', length($val), 1).$val; (...)

Streamfähig heißt, dass der Upload nicht im RAM des Servers zwischengespeichert werden muss, sondern direkt aus dem STDIN Datenstrom in das Filesystem des Servers übertragen werden kann. Ich kann kein Perl, aber deine Implementierung erweckt einen anderen Eindruck. Es kann natürlich andere, streamende Implementierungen geben, wenn der übertragene Datenstrom dafür geeignet gestaltet ist.

In PHP ist das bei multipart/form-data so gelöst, dass anhängende Uploads vom Server automatisch als Temp-Dateien gespeichert und nicht im RAM gehalten werden. Allerdings deute ich die Hinweise auf die RAM-Limitierung in der PHP-Doku so, dass auch PHP eine einzelne Datei erstmal im RAM montiert bevor sie in den TEMP-Ordner kommt. Aus Sicht der RAM-Nutzung des Servers ist ein multipart-Upload von 10 Dateien zu je 100 MB also besser als eine Codierung dieser 10 Dateien in einen 1GB Klotz.

Bei unbekannten Content-Typen sagt das PHP Handbuch, dass es auf die SAPI-Implementierung ankäme, ob die POST Daten gepuffert würden oder nicht. Ungepuffert würde bedeuten: sie bleiben als IP Pakete auf der Leitung (und der Client wartet), bis das PHP losläuft und sie liest. Aus Sicht des Speicherverbrauchs wäre das optimal. Was gepuffert bedeutet, mag vom Webserver abhängen. Dazu kann ich keine Aussagen machen. Hoffentlich schreibt er bei größeren Uploads eine Temp-Datei...

Was macht PERL? Liest es die POST Daten erstmal komplett in den RAM?

Und für die Theoretiker unter uns: Nicht die Datei präsentiert einen bestimmten abstrakten Datentyp (Datenstruktur, Arry, Hash, Hash of Hashes...) sondern der Serialize-Algorithmus... das mag für XML-Experten eine Überraschung sein ;)

Hä? Eine von vielen Formulierungen deinerseits, bei denen ich mich frage, ob Du einfach zu abgehoben denkst, dass man Dich nicht versteht, oder ob Du einfach nur 50% deiner Gedanken niederschreibst und darum die Hälfte zum Verständnis fehlt. Die dritte Alternative, dass Du nämlich aus Spaß an der Freud vorsätzlich Bullshit ausspuckst, will ich mal ausschließen (auch wenn die pl-Basher hier das vielleicht anders sehen).

Rolf