开发向我反馈,前端业务页面提交数据用js将要传输的数据用json dump后,发给服务器,服务器在loads后发现数据是不全的。
这个问题困扰开发人员和运维人员。首先调整php.ini文件的上传文件数以及上传数据的大小限制参数。调整后发现还是不正常。
后台看到这么一个php.ini里的参数max_input_vars
这个参数默认值为 1000,这个参数的作用就是限制一次提交的表单元素个数不得超过1000,超过的部分不传过去。
那我就想按照这样看,那丢失的数据应该是字典或者列表中的最后几个。但是开发人员说少的部分是深层次的元素。
比如字典是3级。{k1:{x1:{y1:2},x2:2},k2:2} ,这样丢失的部分可能是{y1:2}, 暂且信,必定我没有看到。
那么我们就想都已经处理成json对象了,为什么认为提交的表单元素个数超过1000了!这里我学会了查看前端提交的元素数量的方法,如图:
那么为什么会即使处理成json,还是显示多个form data呢?原因肯定是前端页面在使用js将要提交的数据封装成json对象时就记录了多少个数量,即使封装后也不能改表form data的数量。所以当数量超过服务器php.ini设置限制后,只能接收到json的部分数据。自然loads时就少了。
于是我更改了php.ini 里的max_input_vars= 5000,重启php-fpm数据正常了。