Hallo Nico R.,
TIL: PHP bietet Upload-Monitoring an 😀
Was meinst du damit?
TIL = Today I Learned… - mit anderen Worten: das kannte ich noch gar nicht.
Bin ich auf einem falschen Weg?
Möglicherweise. Die Alternative ist ein clientseitiges Monitoring ohne PHP zu befragen. Dann weißt Du immerhin, wieviele Bytes Du geschickt hast, wenn auch nicht, wieviele Bytes in PHP angekommen sind (die Differenz ist gerade auf dem Draht unterwegs und in diversen Datenpuffern). Hypothetisch geht das mit einem einzigen fetch()-Aufruf, ABER nicht mit FormData als Body. Du brauchst einen ReadableStream, denke ich, um die Häppchen mitzubekommen, die er überträgt, und die Beispiele, die ich dazu gefunden habe, sind alles andere als einfach.
Was Felix anspricht, ist ein handgemachtes Segmentieren des Uploads im JavaScript (→ File API), handgesteuertes Hochladen der Segmente mit einzelnen POST-Requests und ein handgemachtes Einsammeln und Zusammensetzen der Segmente im PHP. Das ist auch nicht so einfach, aber zumindest hast Du dann den Fortschritt komplett in eigener Kontrolle.
Grundsätzlich sollte PHP aber auch den von Dir versuchten Weg liefern können, aber die Voraussetzung, dass die Webserver-Software nicht buffert, sondern PHP das Einlesen überlässt, ist schon wichtig. Wie man das einstellt? Hängt vom Webserver ab. Was man einstellen muss, auch. Wenn's ein Apache ist - der hat eine umfangreiche Online-Doku. Die müsste ich jetzt auch erst studieren.
Wieso die Credentials geholfen haben, ist mir schleierhaft. Arbeitest Du mit HTTP- oder Forms-Anmeldung? Was ich meinte, war ein Blick in das Netzwerk-Tab der Entwicklerwerkzeuge, da siehst Du, was er pro Request an HTTP Headern auf den Draht schickt und zurückbekommt (da sind die Cookies und so'n Zeug drin).
Sorry, dass das Debuggen dieses Ablaufs so ein Rundumschlag ist, aber das ist nunmal ein komplexes Ding, das Du da zum Fliegen bringen willst, und da muss alles zusammenpassen.
Rolf
sumpsi - posui - obstruxi