所以,假设我正在编写一个 Web 服务器,并且我想支持“非常大”的文件上传。让我们进一步假设我的意思是通过标准的 multipart/form-data MIME 类型来做到这一点。我应该说我正在使用 erlang 并且我计划收集从 返回的 http 数据包erlang:decode_packet/2
,但我不想真正收集请求正文,直到 http 请求处理程序找到上传内容的位置。我是不是该
a) 继续收集尸体,忽略它非常大的可能性,因此可能由于内存不足而导致服务器崩溃?
b)在处理标头之前,不要在套接字上接收任何(可能不存在的)请求主体?
c) 做其他事情?
答案 c 的示例可能是:生成另一个进程来收集上传的内容并将其写入临时位置(以最大程度地减少内存使用),同时将该位置提供给 http 请求处理程序以供将来处理。但我只是不知道 - 这里有标准技术吗?