2016-02-28 65 views
2

我有一个xml文件,有超过5000个产品(项目)。这真是一个大文件,解析该文件的执行时间超过40秒。在php中执行时间问题simplexml_load_file

我的PHP代码:

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

对此有任何解决方案?例如只加载文件的一部分?

+0

缓存可能是一个解决方案或在后台处理(例如,与一个齿轮人员服务器)。 – Jan

+0

@Jan你有任何教程来源吗?谢谢。 –

+1

http://gearman.org/或http://queues.io/或者[在这里看看这个问题。](http://stackoverflow.com/questions/3048583/what-is-the-fastest- xml-parser-in-php) – Jan

回答

-1

尝试此上php文件的报头中:

ignore_user_abort(true); 
set_time_limit(0); 
+1

尽管这可能起作用,但由于OP需要,所以不会使执行速度更快...... – Jan

+0

没有区别。正如Jan提到的那样,它不会让执行速度更快。 –

+1

您可以使用SAX解析器进行快速加载。你可以查看http://php.net/manual/en/book.xml.php –

1

尝试调用simplexml_load_file函数LIBXML_COMPACT标志:

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

我搜索了'LIBXML_COMPACT',发现这个:激活节点分配优化(可能会加速应用程序)。但没有太大的区别。 Rajput王子提到,“SAX”解析是一个好主意。任何方式,非常感谢。 –

+0

我做了一些查找这样做,并从看libxml2文档,它似乎可以稍微加快阅读在某些情况下,但作为一个结果,你以后不能做任何修改的DOM。所以,如果你想要做的只是阅读而没有做出改变。我发现它很好奇PHP文档没有提到这个限制,所以也许在PHP中不是这样的... – thomasrutter

1

XMLReader是另一种解决方案,如SAX(或外籍),即允许您逐步读取XML文件,并且应该比前者更容易操作。

如果您不需要解析整个文件,并且可以在找到要查找的内容时停下来,它可以使事情快得多。

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