2015-07-10 46 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中时将其编码为字符串。这应该会提高你的速度。