【问题标题】:PHP XML fast readPHP XML 快速读取
【发布时间】:2013-08-26 12:31:47
【问题描述】:

我在我的主页上加载了 50 多个 XML 文件。您可以在此处查看示例结构:

http://api.eve-central.com/api/marketstat?usesystem=30000142&hours=24&typeid=3683&minQ=10000

我需要价格“卖出”->“最低”。所以目前我运行foreach() 循环并在得到它时停止。但是我的页面需要超过 30 秒来处理这个问题,我想我需要直接输入数据,例如:

$min = $xml -> children() -> children() -> sell -> min;

谁能给我正确的算法?

感谢步骤

【问题讨论】:

  • 是否有任何迹象表明这些数据的更新频率?如果每分钟一次,那么考虑每分钟缓存一次完成的页面并提供服务。
  • 那些“文件”实际上不是文件,而是 HTTP 资源——下载其中的 50 个只需要一定的时间。正如@Cups 已经说过的,看看你是否可以缓存它们而不是每次都重新读取它们。

标签: php html xml api


【解决方案1】:

使用simplexml_load_file 函数。它是如此简单和快速!

$xml = simplexml_load_file('http://api.eve-central.com/api/marketstat?usesystem=30000142&hours=24&typeid=3683&minQ=10000');

echo $xml->marketstat->type->sell->min; // 257.99

还有SimpleXMLElementfile_get_contents

$xml_str = file_get_contents('http://api.eve-central.com/api/marketstat?usesystem=30000142&hours=24&typeid=3683&minQ=10000');
$xml = new SimpleXMLElement($xml_str);

echo $xml->marketstat->type->sell->min;  // 257.99

【讨论】:

  • +1 Thx 这就是我搜索的内容,但它并没有使我的代码更快:(。加载 57 个文件也需要 30 秒,这正常吗???我加载的 57 个数据相同像你展示的方式,我认为它是最快的方式还是?
  • simplexml 是我所知道的最好的 xml 解析器之一。
  • 好的谢谢!我将数据保存在sql中并通过cronjobs更新它,所以我的问题解决了!
【解决方案2】:

有趣的是,我目前也在使用 eve-central api。 不过,我必须给你一个很好的提示,eve-central 允许你传递多个项目的请求。

http://api.eve-central.com/api/marketstat?typeid=3683&typeid=3684&typeid=3685&typeid=3686&typeid=3687&typeid=3688&typeid=3689&usesystem=30000142&hours=24&minQ=10000

这样。

构建一个很好的 for 循环来获取您想要的所有 id,然后让它构建一个这样的 url。 添加完所有 &typeid= 后,添加 &usesystem=30000142&hours=24&minQ=10000 并执行 simplexml_load_file(此处为您的 url 的名称);

现在您可以对获得的所有项目的 xml 输出执行一次 foreach。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-12-10
    • 1970-01-01
    • 2012-07-09
    相关资源
    最近更新 更多