Autor Zpráva
Dusann
Profil
Ako presne funguje proces uploadu vzhľadom na vyhodnocovanie veľkosti POST requestu ?

Z testovania na localhoste som nadobudol pocit že to funguje nasledovne:

- uživateľ priloží súbor do formulára a klikne na submit

- POST request sa spracuváva webserverom, nezávisle na veľkosti POST dát. Jediným limitom je (v prípade Apache) LimitRequestBody, ktoré nefunguje veľmi spoľahlivo - niekedy vráti error http status, niekedy ukončí http nasilu, bez statusu.

-Až keď sa celý POST spracuje webserverom, až v tejto fáze je možné zamietnuť príliš veľké POST requesty (post_max_size + upload_max_filesize). To je neželané, keďže príliš veľké súbory nie je možné zrušiť už počas uploadu.

Ako teda umožniť aby súbory nad limitom mohli byť počas uploadu zrušené, a zároveň aby o tom informovala uživateľa chybová hláška priamo na stránke v sekcii uploadu ?

Ak dobre rozumiem, jediné riešenie ktoré by to umožňovalo je Session Upload Progress + Ajax. Niekde som ešte čítal, že je možné ak by existovala nejaká vrstva pred webserverom, ktorá by kontrolovala veľkosť requestu počas spracovania.

Tu je ukážka portálu, na ktorom to funguje tak ako popisujem:

www.profesia.sk/send_cv.php?offer_id=2474546&inc_stat=3

Pokiaľ ako prílohu pre CV vložíte veľký súbor (skúšal som cca 200MB), tak request sa určitú, nie veľmi dlhú dobu spracuváva a nakoniec sa zobrazí chybová hláška priamo na stránke (nie error response z webserveru). Najprv som si myslel že to vyriešili pomocou Session Upload Progress + AJAX, ale po vypnutí JS to funguje rovnako. Akým spôsobom teda može byť vyhodnocovanie veľkosti počas uploadu na tomto portáli vyriešené ?
Davex
Profil
Dusann:
Nedá se říct, že by upload fungoval všude stejně. Záleží na kombinaci operačního systému, webserveru, způsobu komunikace s PHP a konfiguraci. Někdy mohou POST data čekat v keši bufferu operačního systému, jindy v Apache nebo reverní proxy a často mohou jít průběžně do PHP. Většinou se dá spolehnout jen na to, že se PHP skript, kterému se data posílají, spustí až po dokončení přenosu dat. Domnívám se, že pro vynucení přerušení uploadu PHP skriptem na serveru by bylo nutné udělat vlastní zpracování surových POST dat.

Akým spôsobom teda može byť vyhodnocovanie veľkosti počas uploadu na tomto portáli vyriešené ?
Během uploadu nejspíš nijak. Zkoušel jsem 30 MB soubor, který se tam nahrál celý.

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: