【问题标题】:PHP API Request with Large Array Parameter带有大数组参数的 PHP API 请求
【发布时间】:2015-07-10 04:28:22
【问题描述】:

我的公司正在开发一种 API,用于向我们的利益相关者报告数据。用户可以登录并在几个不同的页面上查看大量数据集。需要注意的是,登录的用户可能有其他“用户”以某种方式为他们赢得了报酬,他们在每个单独的页面上都可以看到这些数据。

缺点是某些用户可以拥有超过 2,000 个关联用户,他们可以查看这些用户的数据。业务需求是将这些“子用户”放入下拉框中,并允许登录用户选中/取消选中以过滤数据集。我们的端点之一的参数是:

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

dates 数组由“From”和“To”日期组成,以允许用户查看历史报告。由于这只是报告,因此查询只是选择语句。查询本身似乎运行良好(不到 1 秒)。但是,通过 API 本身的实际请求需要很长时间才能通过。由于我们一些用户的“子用户”数组的大小,我们最近不得不将“GET”请求更改为“POST”请求。我们还必须将 max_input_vars 从默认值 1,000 增加到 5,000。这对一些人来说仍然不够,所以我们增加到 10,000 个。这只是一个临时解决方案,不能被认为是继续提高 max_input_vars 的可行选项。但是,此更新仅允许 API 完成处理,但并没有加快处理速度。

在处理可能包含如此大数组的参数时,是否有任何建议或最佳实践?任何有关如何最好地处理此类要求的建议或反馈将不胜感激。谢谢!

【问题讨论】:

    标签: php rest request http-post httprequest


    【解决方案1】:

    max_input_vars 和 max_input_time 以意想不到的方式影响 $_POST 变量。如果发布数据所需的时间大于 max_input_time,$_POST 将开始缺失值。 max_input_vars 也是如此。

    对此的一种解决方案是不将数组作为数组发布,而是在发布时将其编码为字符串(使用 serialize / json_encode)并在 API 中对其进行解码。这应该可以提高您的速度。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-12-01
      • 1970-01-01
      • 1970-01-01
      • 2019-04-10
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多