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