尽可能多地接收未完成的 HTTP 请求

Receiving as much of an HTTP request as possible that didn't complete

简而言之,如果我发送的 HTTP POST 具有较大(20-30mb)的负载,并且连接在向服务器发送请求的过程中途中断,我能否恢复 10mb+ 的负载?在连接断开之前发送?

我在 NGINX 上测试 PHP 时,如果连接在上传过程中断开,我的 PHP 似乎永远不会启动。我在脚本顶部有 ignore_user_abort(1),但这似乎只有在收到完整请求后才有意义。

是否有某个配置设置可以让我看到收到的所有请求,即使没有收到完整的请求?

我主要通过间歇性连接发送这些文件,所以我想根据请求发送尽可能多的文件,然后询问服务器从哪里继续。就目前的情况而言,我必须分段发送文件,如果有错误则减小分段的大小,或者如果有一段时间没有任何错误则增加分段的大小。这非常慢并且浪费带宽。

=======

我应该澄清一下,我所追求的并不是一次上传一个大文件,而是连接中断了,我可以从我离开的地方继续吗?在我所有的测试中,如果没有收到完整的 post,整个请求就会被丢弃并且 PHP 不会收到通知,所以我必须从头开始。

我将不得不 运行 进行一些测试,但是你是说如果我对请求使用分块传输编码,那么 PHP 会在断开连接之前获得所有接收到的分块吗?值得一试,如果连接断开,制作多个更小的 post 肯定更好。

感谢您的建议。

从不通过脚本后端处理大文件上传(Ruby、PHP),有一个名为 client_body_in_file_only[=16 的内置直接上传功能=],请在此处查看我对此的深入概述:https://coderwall.com/p/swgfvw/nginx-direct-file-upload-without-passing-them-through-backend

唯一的限制是它不适用于多部分表单数据,只能通过 AJAX 或直接 POST 从移动设备或服务器到服务器。