Итак, допустим, я пишу веб-сервер и хочу поддерживать «очень большие» загрузки файлов. Далее предположим, что я собираюсь сделать это через стандартный MIME-тип multipart / form-data. Я должен сказать, что я использую erlang и что я планирую собирать http-пакеты, когда они возвращаются с erlang:decode_packet/2
, но я не хочу на самом деле собирать тело запроса, пока обработчик http-запроса не найдет место для загруженного контента в идти. Должен ли я
a) все равно собирать тело, игнорируя возможность его очень очень большого размера и, возможно, сбоя сервера из-за нехватки памяти?
b) воздерживаться от получения в сокет любого (возможно, несуществующего) тела запроса до тех пор, пока не будут обработаны заголовки?
в) сделать что-то еще?
Примером ответа c может быть: порождать другой процесс для сбора и записи загруженного контента во временное местоположение (чтобы минимизировать использование памяти), одновременно передавая это местоположение обработчику запросов http для дальнейшей обработки. Но я просто не знаю - есть ли здесь стандартная техника?