開發向我反饋,前端業務頁面提交數據用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數據正常了。
