当连接速度较慢的远程Web客户端无法发送带有multipart / form-data内容的完整POST请求但
PHP仍然使用部分接收的数据来填充$_POST数组时,我遇到了问题.因此,$_POST数组中的一个值可能不完整,可能会丢失更多值.我试图在
Apache list中首先提出相同的问题并得到
an answer,Apache没有缓冲请求体并将其作为一个传递给PHP模块
巨大的斑点.
这是我的示例POST请求:
POST /test.php HTTP/1.0
Connection: close
Content-Length: 10000
Content-Type: multipart/form-data; boundary=ABCDEF
--ABCDEF
Content-Disposition: form-data; name="a"
A
--ABCDEF
您可以看到Content-Length是10000字节,但我只发送一个var a = A.
PHP脚本是:
我的请求的其余部分Web服务器等待大约10秒钟(但我不发送任何内容),然后返回此响应:
HTTP/1.1 200 OK
Date: Wed, 27 Nov 2013 19:42:20 GMT
Server: Apache/2.2.22 (Debian)
X-Powered-By: PHP/5.4.4-14+deb7u3
Vary: Accept-Encoding
Content-Length: 23
Connection: close
Content-Type: text/html
Array
(
[a] => A
)
所以这是我的问题:如何在PHP中验证邮件请求是否已完全收到? $_SERVER [‘CONTENT_LENGTH’]会从请求标头显示10000,但有没有办法检查收到的实际内容长度?