Php 从rest服务发送大量记录

Php 从rest服务发送大量记录,php,xml,json,rest,download,Php,Xml,Json,Rest,Download,我有一个PHP中的REST服务,它返回一个JSON或XML响应。但这项服务的一个分支是用于更新本地数据库,问题是记录的数量或多或少为18万条 我的问题是,对于这个有大量记录的操作,最好的方法是什么 我想在服务器上创建一个临时文件,比如csv、txt for json或xml,然后在客户机上下载,否则会从先前请求的id列表中递归发送GET请求 阅读评论后可能的解决方案 我发现解决方案是先创建一个csv文件(28MB),然后创建一个zip文件(5MB),并将其传递给下载……返回180k条记录的Web

我有一个PHP中的REST服务,它返回一个JSON或XML响应。但这项服务的一个分支是用于更新本地数据库,问题是记录的数量或多或少为18万条

我的问题是,对于这个有大量记录的操作,最好的方法是什么

我想在服务器上创建一个临时文件,比如csv、txt for json或xml,然后在客户机上下载,否则会从先前请求的id列表中递归发送GET请求

阅读评论后可能的解决方案


我发现解决方案是先创建一个csv文件(28MB),然后创建一个zip文件(5MB),并将其传递给下载……

返回180k条记录的Web服务在概念上是错误的,意外的DoS攻击正在等待发生(更不用说由于流量配额而关闭的托管帐户了)

您应该在此基础上实现分页,如:

http://myserver.tld/myservice/getItems?from=100&max=1000

max
参数限制在合理的范围内(对于相对较小的记录,可能是1000或10000),并确保公开一种查找行总数的方法-例如,在这个调用的结果中,或者在另一个
getItemCount
调用中。

@Neils是正确的,RESTful服务不应该在一个请求中提供那么多记录。实现分页并添加HAL()链接(如果您选择)


如果你的客户真的需要这么大的一整套数据(同样,这可能是一个需要重新访问的设计),那么你正在寻找一个不同的用例。异步生成该数据集并适当缓存。还要考虑XML/JSON是否是数据集的正确格式,它知道您的客户端将不得不加载和解析它。一个简单的CSV或其他东西就足够了吗?

记录数量的具体问题是什么?您是否收到任何错误消息?据我所知,JSON和XML对可以编码的元素数量没有限制。这两种格式都可能有点冗长,但是,如果在HTTP层中启用压缩,则主要会考虑到这一点。服务器返回内存错误,过程执行时间增加,数据量增加时,支持分页和批处理(以及REST btw)的数据交换中的一个标准小田: