【发布时间】:2012-08-12 14:33:17
【问题描述】:
就大型 xml 文件的处理时间而言,我遇到了这个问题。大,我的意思是平均600MB。 目前,解析数据并将其插入数据库大约需要 50 - 60 分钟。 我想请教如何改进处理时间的建议?大概需要 20 分钟。
因为按照当前时间,我需要 2.5 个月才能用 xml 中的内容填充数据库。顺便说一句,我有 3000 多个 xml 文件,平均为 600mb。还有我的 php 脚本在命令行中通过 cron 作业。
我还阅读了类似下面的其他问题,但我还没有找到任何想法。 What is the fastest XML parser in PHP?
我看到有些解析的文件最大为 2GB。我想知道处理时间有多长。
希望各位大神帮忙。 将不胜感激。 谢谢。
我有这个代码:
$handler = $this;
$parser = xml_parser_create('UTF-8');
xml_set_object($parser, $handler);
xml_parser_set_option($parser, XML_OPTION_CASE_FOLDING, false);
xml_set_element_handler($parser, "startElement", "endElement");
xml_set_character_data_handler($parser, "cdata");
$fp = fopen($xmlfile, 'r');
while (!feof($fp)) {
while (($data = fread($fp, 71680))){
}
}
我首先将解析数据放在一个临时数组中。 我的 mysql 插入命令在 endElement 函数内。 有一个特定的结束标记来触发我对数据库的插入命令。
感谢您的回复....
【问题讨论】:
-
你当前的密码是多少?!不知道很难提出改进建议。
-
好的,这是一个没有经验的人的建议:“你试过正则表达式吗?”我想知道正则表达式是否最适合这项任务,抛开编码的简单性。有专家吗?
-
@goldenparrot codinghorror.com/blog/2009/11/parsing-html-the-cthulhu-way.html :D
-
@EzequielMuns Heyyy,你总是可以正则表达式干净,严格格式化的 xml!这就是第二个*答案在那里所说的。正确的? 800+ 票?顺便说一句,很好读:)
-
我认为 reqex 不会工作,因为它是大文件。而且我必须分块来归档或流式传输内容。因为一次性加载到内存会产生内存错误。
标签: php xml performance parsing profiling