gpt4 book ai didi

php - 在 PHP 中不使用太多内存的情况下读取/写入大型 XML

转载 作者:行者123 更新时间:2023-12-04 03:05:00 25 4
gpt4 key购买 nike

我正在尝试查询一些非常大的 XML 文件(最多几个 gig),检查它们的格式是否正确,然后将它们写入硬盘。看起来很简单,但是由于它们太大了,我无法在内存中保存整个文档。因此我的问题是:当可用 RAM 少于一个文档的大小时,如何读取、检查和写入大型 XML 文件?

我的方法:使用 XMLReader 逐个节点读取它(如果成功,则文档必须格式正确)并使用 XMLWriter 进行写入。问题:XMLWriter 似乎将所有内容都存储在 RAM 中,直到文档完成。 DOM 文档和 SimpleXML 似乎也是如此。还有什么我可以尝试的吗?

最佳答案

您的方法似乎很合适,要解决 XMLWriter 的 RAM 问题,您可以尝试定期将内存刷新到输出文件中。

<?php
$xmlWriter = new XMLWriter();
$xmlWriter->openMemory();
$xmlWriter->startDocument('1.0', 'UTF-8');
for ($i=0; $i<=10000000; ++$i) {
$xmlWriter->startElement('message');
$xmlWriter->writeElement('content', 'Example content');
$xmlWriter->endElement();
// Flush XML in memory to file every 1000 iterations
if (0 == $i%1000) {
file_put_contents('example.xml', $xmlWriter->flush(true), FILE_APPEND);
}
}
// Final flush to make sure we haven't missed anything
file_put_contents('example.xml', $xmlWriter->flush(true), FILE_APPEND);`

来源:http://codeinthehole.com/tips/creating-large-xml-files-with-php/

关于php - 在 PHP 中不使用太多内存的情况下读取/写入大型 XML,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45414460/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com