Der Martin: Datei-Upload

Beitrag lesen

Hallo,

Ich darf ein Script schreiben, dass es Usern ermöglicht, bis zu 50MB große Dateien hochzuladen.

ach du liebe Güte!

Soweit is das kein Problem. Nun gibt es aber in der php.ini die max_execution_time usw., welche die Ausführungszeit des Scripts beschränken.

Vermutlich ist max_upload_file_size oder max_post_size eher dein Problem, vielleicht auch schon das Limit des Webservers vornedran.

Die darf ich nicht ändern.

Die max_execution_time ist auch wahrscheinlich gar nicht deine Baustelle, denn die beginnt AFAIK erst, wenn der Upload an sich abgeschlossen ist und dein Script gestartet wird. Außerdem zählen I/O-Operationen nicht zur Laufzeit des Scripts.

Kollege meint, es irgendwann in Verbindung mit Javascript gelöst zu haben, findet das Script aber nicht mehr. Wissen tut er es auch nicht mehr genau.

Das würde mich auch *sehr* wundern. Ich kann mir nicht vorstellen, wo da ein Lösungsansatz steckt, bin aber neugierig, ob du den Ansatz nochmal ausgraben kannst.

Ich könnt mir da nur vorstellen, dass Javascript nach vielleicht 50 Sekunden nen Refresh auslöst, dabei das Formular nochmal absendet und PHP dann irgendwie den Upload fortführt. Bloß woher weiß PHP dann, dass er bei 50 Byte weitermachen soll und nicht von Anfang an?

Gar nicht - es wird eine neue Script-Instanz gestartet und der Upload beginnt von vorn. Wenn Client und Server beide mitspielen, wird der Server möglicherweise melden: "Die ersten 8.2MB hab ich schon im TEMP-Verzeichnis, ich brauch nur den Rest." HTTP/1.1 erlaubt das. Dennoch hast du dann, wenn der Upload endlich beendet ist, mehrere Scriptinstanzen, die darüber herfallen.

Habt ihr einen Wink mit dem Zaunpfahl, wie ich die maximale Ausführungszeit von PHP austricksen kann, ohne in der php.ini etwas zu ändern?

Siehe Romys Vorschlag. Ich glaube nur nicht, dass dir das helfen wird.

Ciao,
 Martin

--
You say, it cannot be love if it isn't for ever.
But let me tell you: Sometimes, a single scene can be more to remember than the whole play.
Selfcode: fo:) ch:{ rl:| br:< n4:( ie:| mo:| va:) de:] zu:) fl:{ ss:) ls:µ js:(