【问题标题】:XML to Database, what route should I take?XML到数据库,我应该走什么路线?
【发布时间】:2015-07-01 16:20:44
【问题描述】:

我可以访问流量数据服务器,从该服务器获取包含所需信息的 XML 文件。 (例如:A 点到 B 点:行程时间 20 分钟,距离 18 英里等)。

我下载 XML 文件(已存档),解压缩,然后对其进行处理并将其存储到数据库中。我只允许每个请求下载 XML 文件,但前提是距离上次下载已过去 5 分钟。流量服务器上的 XML 每 30 秒到 5 分钟更新一次。在 5 分钟内,任何请求网页的用户都会从数据库中检索数据(不更新),因此会限制向流量服务器发出的请求数。

我目前的方法的问题是,当我获得新的 XML 文件时,整个过程需要一些时间(3-7 秒),这使得用户在获得任何东西之前等待太多。但是,当不需要下载 XML 并且所有数据都直接从数据库中显示时,该过程非常快。 归档的 XML 约为 100-200KB,而未归档的 XML 约为 2MB。 XML 文件包含来自 3 或 4 个州的交通数据,而我只需要一个州的数据。这就是我目前使用 DB 方法的原因。

这种方法好用吗?我想知道是否应该为每个请求直接从下载的 XML 文件中提取数据,并以某种方式限制从流量服务器下载 XML 文件的频率。或者,谁能指出更好的方法?

XML 文件示例

这是我网站上的样子

【问题讨论】:

  • 定义“好”。什么衡量标准对您很重要?
  • 我想到了 CRON 作业路线,但这意味着无论是否有任何用户请求数据,它都会被更新。现在它只有在被请求并且自上次更新后不超过 5 分钟时才会更新。即使在请求新的 XML 时也能更快地访问!
  • 您可以创建一个定期访问 XML 文件、解析它并将数据存储到数据库中的 CRON 作业。然后用户将只能访问数据库数据。这样用户访问数据时就不会出现任何明显的延迟。
  • 老实说,如果用户被告知正在发生的操作(例如“正在加载...”状态栏或微调器),那么 3-7 秒并不是什么大问题。您可以使用 AJAX 来实现。
  • @Cristian 如果每个请求都从数据库读取,但当您读取过期数据时,它也会触发 XML 下载怎么办?多个请求(下载期间)仍会从 DB 中读取。

标签: php mysql xml database


【解决方案1】:

每次更改时都需要下载 XML。

但只有当您在下一个时间段内有活跃用户时才需要下载文件。

因为你无法预见未来,所以你不知道你是否会在接下来的 7 秒内收到用户的请求。

但是,如果 XML 文件已更新,您可以通过 HEAD 请求查明。

因此,您可以自己创建一个服务,该服务在每次更改时从远程系统下载 XML。如果确实不经常需要该日期,您可以将该服务配置为不经常检查和/或下载。

只要你能通过对用户行为的统计分析,了解下载服务的最佳配置,你系统的其余部分就可以独立于它。

如果您需要更高的实时性,您需要根据来自其他系统的更改数据配置新服务,然后您需要开始在这两个系统之间双向交换数据,这更复杂并且可能导致更多副作用。但从你给出的数字来看,这种程度的细节可能无论如何都不需要,所以我不会在意。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-03-18
    • 2012-06-19
    • 1970-01-01
    • 1970-01-01
    • 2018-11-12
    • 2016-01-07
    • 1970-01-01
    相关资源
    最近更新 更多