2015-07-10 28 views
1

我的公司正在開發一個用於向我們的利益相關者報告數據的API。用戶可以登錄並查看多個不同頁面上的大量數據集。需要注意的是,登錄的用戶可能有其他「用戶」以某種方式獲得了他們的報酬,並且他們在每個單獨的頁面上看到了這些數據。帶有大型數組參數的PHP API請求

垮臺的是,一些用戶可以有超過2000個關聯用戶,他們看到的數據。業務需求是將這些「子用戶」放置在下拉框中,並允許登錄用戶檢查/取消選中以過濾數據集。我們的一個端點的參數是:

user  => string 
subUsers => array 
dates => array 

的日期陣列由的「從」和「至」日期,允許用戶查看歷史報告。由於這只是報告,查詢只是選擇語句。查詢本身似乎運行正常(1秒以內)。但是,通過API本身的實際請求需要很長時間才能通過。我們最近不得不將'GET'請求更改爲'POST'請求,因爲我們的一些用戶的'Sub User'數組的大小。我們還必須將max_input_vars從1,000默認值增加到5,000。這還不夠,所以我們增加到了10,000。這只是一個臨時解決方案,不能被認爲是繼續增加max_input_vars的可行選擇。但是,此更新只允許API完成處理,但並未加速處理。

處理可能包含此類大型數組的參數時,是否有任何建議或最佳做法?任何意見或反饋如何最好地處理這種類型的要求將不勝感激。謝謝!

回答

0

max_input_vars和max_input_time以意外的方式影響$ _POST變量。如果發佈數據所需的時間大於max_input_time,則$ _POST將開始缺少值。對於max_input_vars也是如此。

解決這個問題的一個辦法是不將該數組作爲數組發佈,但是在將其發佈(使用serialize/json_encode)並將其解碼到API中時將其編碼爲字符串。這應該會提高你的速度。