记一次curl post请求数据被截断问题处理通过linux curl 命令和php脚本的curl请求一个接口地址php返回数据截断,返回的json数据比较大,结果只获取到部分数据,并且linux curl终端还报php返回数据截断了个错 , 如下:
curl: (18) transfer closed with outstanding read data remaining
怀疑服务端有异常 , 查看nginx日志发现
nginx[warn]:an upstream response is buffered to a temporary
虽然是个warn,但出现问题的时候也一样要警示 。
于在nginx.conf 的http 里加入如下一段:
加大buffer的配置,居然没管用
后经查,负载均衡采用的nginx反向代理,于是到nginx代理服务器上,http里加入如下一段:
问题解决 。
分析:
Nginx 的 buffer 机制 , 对于来自 FastCGI Server 的 Response,Nginx 将其缓冲到内存中,然后依次发送到客户端 。缓冲区的大小由 fastcgi_buffers 和 fastcgi_buffer_size 两个值控制 。fastcgi_buffer_size 则是处理 Response 时第一个缓冲区的大小,不包含在fastcgi_buffers中,如上配置
最大内存缓冲区大小是 8 * 1284 = 1028K
当 Response的内容 小于等于 1028K 时,所有数据当然全部在内存中处理 。如果 Response 大于 1028K,多出来的数据会被临时写入到文件中 , 放在fastcgi_temp目录下面 。此时会在看到类似如下 warning:
这个值太小,Nginx 会频繁读写硬盘,影响性能,太大也不好,会吃掉内存,所以根据实际Response的内容大小来定 。
php 如何判断“请求被截断”方法2:getInput(String input) , 可以转化为代码request.getParmater(“input”),
由于字符串中包含了‘’字符,直接用postman进行投递时候,字符串会拦断【request.getParamater会以截断参数】 。因此不能直接投递 。可以将input的json字符串url enode后投递 。
第二种方式,就是在postman中header中设置
key:content-type
value:application/json
在Body中设置json数据
然后在代码中指明接受为requestBody
参考一下
前端提交大量数组至PHP后台,数据被截断2019-05-14
当对象数组长度较大时,PHP后端获取的POST数据不完整
php.ini中max_input_vars 参数默认为1000 改为5000解决
也可使用JSON.stringify转换为JSON字符串传到后端,后端解析后再处理
【php返回数据截断 php返回字符串长度】关于php返回数据截断和php返回字符串长度的介绍到此就结束了 , 不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站 。
推荐阅读
- 微星560怎么选硬盘大小,微星560mortar
- 以弹力带为教具的体育游戏,弹力带游戏方法介绍
- 网卡怎么用路由器登录网页,网卡怎么用在路由器上
- 网站写java代码 网站 java
- 如何打造保险营销团队优势,保险业务团队建设妙招
- 公众号迁移之后怎么搜索,公众号迁移找不到了
- cpu什么来完成控制,cpu控制是什么意思啊
- go语言访问达梦数据库 linux进入达梦数据库
- wordpress注册后邮箱没有收到信息的简单介绍