【问题标题】:Dealing with large amounts of data via XML API通过 XML API 处理大量数据
【发布时间】:2011-09-07 12:45:38
【问题描述】:

所以,我在这里搜索了一些,但没有找到任何好的东西,如果我的搜索功能不足,请道歉......

所以,今天我的用户使用表单将 CSV 文本文件上传到我的 PHP 脚本,然后在验证其中的每一行后,我将该文件导入数据库。文本文件的长度约为 70,000 行,每行包含 24 个值字段。自从处理这种数据以来,这显然不是问题。每一行都需要验证,并且我检查数据库是否有重复项(根据从数据生成的动态密钥)以确定是否应该插入或更新数据。

好的,但是我的客户现在为此请求自动 API,因此他们不必手动创建和上传文本文件。当然可以,但是我该怎么做呢?

如果我要使用 REST 服务器,如果一个请求包含要插入 70k 个帖子的 XML,内存将很快耗尽,所以这几乎是不可能的。

那么,我该怎么做呢?我已经考虑了三个选项,请帮助 med 决定或将更多选项添加到列表中

  1. 每个请求一个帖子。并非所有客户端都有 70k 个帖子,但对数据库的更新可能会导致 API 在短时间内处理 70k 个请求,而且无论哪种方式都可能是每天。

  2. 每个请求的帖子数量 X。将 API 处理每个请求的帖子数量设置为一次限制,例如 100 个。这意味着 700 个请求。

  3. API 要求客户端脚本上传准备好使用当前例程导入的 CSV 文件。这看起来很“脆弱”,而且不是很现代。

还有其他想法吗?

【问题讨论】:

  • 我不确定这里有什么意义。您的客户不想创建 CSV 文件,但他们更愿意创建 XML 文件?也许对此有更大的了解应该可以帮助我们更好地理解,从而帮助您做出决定...
  • 他们更愿意使用 Web 服务,而不是创建 XML 文件。大多数 Web 服务方法(SOAP、REST、XMLRPC)都与 XML 通信,因此我引用了 XML。

标签: php xml database api rest


【解决方案1】:

如果您阅读了 SAX 处理 http://en.wikipedia.org/wiki/Simple_API_for_XML 和 HTTP 块编码 http://en.wikipedia.org/wiki/Chunked_transfer_encoding,您会发现在发送 XML 文档时解析它应该是可行的。

【讨论】:

  • 不错的主意,但我想知道它有多普遍。虽然 Simple API for XML 是处理数据的方式,但您仍然需要发送部分来处理数据的整个分块,不是吗?但无论如何感谢指针
  • @Sandman 我希望大多数 Http 客户端库能够自动为您处理分块。微软平台上的那些。
  • @Sandman SAX 阅读器可在多个平台上使用。不确定php。
【解决方案2】:

我现在通过对每个请求设置 100 个帖子的限制来解决这个问题,并且我正在通过 PHP 使用 REST 来处理数据。上传 36,000 个帖子大约需要 2 分钟完成所有验证。

【讨论】:

    【解决方案3】:

    首先不要为此使用 XML!使用 JSON,比 xml 快。

    我在我的项目中使用从 xls 导入。文件很大,但脚本工作正常,只是客户端必须创建具有相同结构的文件才能导入

    【讨论】:

      猜你喜欢
      • 2019-11-25
      • 2021-12-17
      • 2018-07-20
      • 2018-07-29
      • 1970-01-01
      • 1970-01-01
      • 2016-02-05
      • 2018-09-17
      • 1970-01-01
      相关资源
      最近更新 更多