【问题标题】:Execution time issue in php simplexml_load_filephp simplexml_load_file 中的执行时间问题
【发布时间】:2016-06-11 11:07:46
【问题描述】:

我有一个 xml 文件,其中包含 5000 多个产品(项目)。文件真的很大,解析这个文件的执行时间超过 40 秒。

我的 php 代码:

ini_set('max_execution_time', 300);
$xml = simplexml_load_file("wwww.example.com");
print_r($xml);

有什么解决办法吗??例如只加载文件的一部分?

【问题讨论】:

标签: php xml xml-parsing execution-time


【解决方案1】:

尝试使用LIBXML_COMPACT 标志调用simplexml_load_file 函数:

$xml = simplexml_load_file("wwww.example.com",'SimpleXMLElement',LIBXML_COMPACT);

【讨论】:

  • 我搜索了LIBXML_COMPACT,发现:激活节点分配优化(可以加快申请速度)。但差别不大。 SAX parse 是 Rajput 王子提到的一个好主意。无论如何,非常感谢。
  • 我做了一些查找它的作用,从查看 libxml2 文档看来,在某些情况下它可以稍微加快阅读速度,但因此您以后无法对 DOM 进行任何修改。因此,如果您只想阅读而不是进行更改,那很好。我觉得奇怪的是 PHP 文档没有提到这个限制,所以在 PHP 中可能不是这样......
【解决方案2】:

XMLReader 是另一种解决方案,例如 SAX(或 expat),它允许您以增量方式读取 XML 文件,并且应该比前者更容易使用。

如果您不需要解析整个文件,它可以大大加快处理速度,并且可以在您找到所需内容时停止。

如果您仍然需要用它解析整个文件,它不会提供加速。

【讨论】:

    猜你喜欢
    • 2012-02-14
    • 1970-01-01
    • 2011-07-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-09-12
    • 1970-01-01
    相关资源
    最近更新 更多