0

我有最大 1GB 的 html 文件。我想在数据库中上传这个 html 文件的内容。文件(html)包含<table><tr><td></td></tr></table>标签。如果文件大小约为 5MB 或 6MB,则此工作完成,但大文件大小给我 OUT OF MEMORY(xxxxx 字节)试图分配(xxxxxxx 字节)的错误。

我如何在数据库中上传大文件大小的数据..

我使用 DOMDocument -> LoadHTMLfile 函数.... 和 getElementByTagName("tr")

4

2 回答 2

2

当 PHP 在尝试为数组、变量等分配内存时耗尽内存时会触发此错误。最大内存量在 php.ini 中使用指令指定

memory_limit = 128M

(或类似的)。尝试增加值,看看它是否有帮助。但是,如果您超过了非常大的内存分配(例如,256 MB 或更大),那么您的设计肯定存在缺陷,因为您不应该一次在内存中保留那么多数据。

如果您正在处理一个文件,您应该分块读取文件,将数据插入数据库并读取更多块。对于 HTML 处理,SAX 解析器可能是一个好主意,可能是这样的。

于 2012-05-13T18:51:32.033 回答
0

使用 XMLReader

http://www.php.net/manual/en/book.xmlreader.php

它不会一次将整个文档读入内存。

于 2012-05-13T18:49:36.957 回答