【问题标题】:Querying large XML file (600mb+) in PHP or JavaScript?在 PHP 或 JavaScript 中查询大型 XML 文件 (600mb+)?
【发布时间】:2010-02-08 13:59:59
【问题描述】:

我有一个大型 XML 文件 (600mb+),并且正在开发一个需要查询该文件的 PHP 应用程序。

我最初的方法是从文件中提取所有数据并将其插入 MySQL 数据库 - 然后以这种方式查询。唯一的问题是它仍然很慢,而且 XML 数据会定期更新——这意味着每次更新 XML 文件时,我都需要下载、解析 XML 文件中的数据并将其插入数据库。

真的可以查询 600mb 的文件吗? (例如,搜索 TITLE="something here" 的记录?)是否有可能让它在合理的时间内完成这项工作?

理想情况下,我希望在 PHP 中执行此操作,但我也可以使用 JavaScript。

任何帮助和建议表示赞赏:)

【问题讨论】:

    标签: php javascript xml


    【解决方案1】:

    为 600+ Mb 的文档构建 XML DOM 绝对是一种失败的方式。您需要的是基于SAX 的API。虽然 SAX 通常不允许使用 XPath,但您可以使用命令式代码来模拟它。

    对于正在更新的文件,是否可以仅检索差异?这将大大加快后续处理速度。

    【讨论】:

    • 我尝试使用 SAX - 它可以很好地解析文件但仍然相对较慢 - 我真的可以做一些事情来查询文件。如果没有其他问题,我可能会再试一次 SAX - 感谢您的回答:)
    • @Flava 基于 SAX 的解析通常性能更高,因为它允许流式传输文件内容。确保您有足够大的缓冲区,以便排除磁盘 IO 命中。
    猜你喜欢
    • 1970-01-01
    • 2013-08-03
    • 2012-11-16
    • 1970-01-01
    • 1970-01-01
    • 2022-01-11
    • 2021-10-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多