【问题标题】:Parsing XML remotely vs. Saving file locally with cURL and parsing locally远程解析 XML 与使用 cURL 在本地保存文件并在本地解析
【发布时间】:2014-01-17 01:58:43
【问题描述】:

在服务器上每 10 分钟发布一个 XML 数据文件,我将使用 cron 作业在我的站点上解析和更新。我将获取信息,将其保存到 MySQL 数据库,然后显示在我的网站上。我对执行此操作时的最佳做法有疑问。

该文件大约 200 - 300 KB,因此不是很大,但我对如何执行此操作有两个想法:

1) 只需使用 simplexml_load_file() 加载文件并解析信息。

2) 使用 cURL 抓取文件并将其保存到我的服务器,然后在本地从我的服务器进行解析。

我很好奇什么是最佳做法,什么是最有效的。使用 simplexml_load_file(),文件是在本地加载然后解析还是在您浏览数据时多次加载?如果它只加载一次,我想那将是最好的选择。我担心的一个问题是,我不想让每次运行 cron 作业时都在抓取 XML 文件的服务器陷入困境。我想它不会,因为它是一个如此小的文件,但我试图只是每隔一段时间抓取文件,然后以最好的方式对数据进行需要做的事情。

我正在尝试了解这些功能的工作原理。让我知道您是否需要对该问题进行更多说明。感谢您的帮助!

【问题讨论】:

  • 您是否需要保留该文件的副本以备将来进行故障排除?

标签: php mysql xml parsing curl


【解决方案1】:

两者都可以正常工作。通常,在这么小的文件上,我可能会做你现在正在做的事情。话虽如此,如果它对时间敏感并且是 cron 工作,我会做一些不同的事情。

将文件拉到您的服务器并保存哈希值。 如果新文件的哈希值与另一个不同,则解析,否则在 30 秒内重新运行脚本。如果每 8 到 9 分钟运行一次,那你的好 +/- 2 分钟。

这样您就不会冒让 cron 提前 30 秒运行并落后 9:30 分钟的风险。

要回答您的问题,“使用 simplexml_load_file(),文件是在本地加载然后解析还是在您浏览数据时多次加载?”是的,它会将它拉到您的服务器一次,然后解析 xml。

希望对您有所帮助。 :)

编辑:有关正在发生的事情的更深入解释,您可以搜索 “http stateless get request” 让你头疼不已,我学得越多,我的问题就越多,;) 但它会解释当你的脚本请求 GET xml(或其他 MIME 类型)时发生了什么) 来自另一台服务器的文件

【讨论】:

  • 那太好了。谢谢!
  • 没问题 :) 祝你好运
猜你喜欢
  • 2012-01-06
  • 2010-11-25
  • 1970-01-01
  • 1970-01-01
  • 2014-06-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多