PHP简单的HTML Dom内存问题

How*_*opa 5 php parsing dom

我正在使用PHP Simple HTML DOM Parser遇到内存问题.我正在解析一个公平的doc,需要运行DOM树...

1)我从整个文件开始:

$html = file_get_html($file);
Run Code Online (Sandbox Code Playgroud)

2)然后解析我的表:

$table = $html->find('table.big'); 
Run Code Online (Sandbox Code Playgroud)

3)然后解析我的行:

$rows = $table[0]->find('tr');
Run Code Online (Sandbox Code Playgroud)

我最终得到的是三个GIANT对象......在解析了我需要的数据之后,谁知道如何转储对象?就像$ html在步骤3中没用,但它是所有对象中最大的.

有任何想法吗?

有没有办法从原始的$ html对象中深入到我的表行?

提前致谢.

编辑:

我设法跳过第二步:

$rows = $this->html->find('table.big tr');
Run Code Online (Sandbox Code Playgroud)

但我仍然遇到内存问题......

Aak*_*hai 21

我可能会迟到......因为我迟到了回答...所以上面给出的答案是不正确的.unset只取消设置$ html而不是其属性.因此,清理内存并启动内存问题是:

$html->clear();.

我想你在使用之前没有读过类代码.clear()函数销毁/释放由$ html对象占用的内存.这个函数是simple_html_dom的内部函数.这个函数立即生效.所以你不必等待一整天或程序终止才能生效.


ycl*_*ian 1

如果内存确实是一个大问题,您可能需要考虑SAX而不是使用 DOM。您可能想尝试unset()获取$html$table,但这只是将其标记为垃圾收集,并且不会立即释放内存。

归根结底,这实际上取决于如何编写内存高效的 Simple HTML DOM 或您选择的实现。