【发布时间】:2017-01-28 01:07:00
【问题描述】:
所以,我使用simple_dom_html library 来解析 HTML,但是,因此存在少量内存泄漏。泄漏很小,但是,我经常使用这个库,仅用了 2 天,我的服务器就从这次泄漏中达到了 16 GB 的内存使用量,这是一个大问题。
为了澄清,我在使用$doc->clear();和unset($doc);之后,但是内存没有清除。
str_get_html之前:649512
$doc->clear()之前:9773480
在$doc->clear() 和$doc = NULL 之后:1127184
在所有事情上致电unset 后:855664
(这些以字节为单位 - memory_get_usage() 返回的内容)
我想说明我使用的是str_get_html。我已经在谷歌、这个网站和其他类似网站上寻找了几个小时的解决方案,但似乎没有任何东西可以解决我的问题。如果您需要更多信息,请在下方评论。
究竟为什么会发生这种内存泄漏?这是我正在运行的脚本:
gc_enable();
echo "before str_get_html: ".memory_get_usage()."<br><br>";
$doc = str_get_html($response);
echo "before \$doc->clear(): ".memory_get_usage()."<br><br>";
$doc->clear();
$doc = NULL;
echo "after \$doc->clear() and nullifying: ".memory_get_usage()."<br><br>";
unset($response);
unset($doc);
echo "after unsetting everything: ".memory_get_usage()."<br><br>";
这是我的内存使用情况的屏幕截图:http://prntscr.com/ck4s78 - 图表停止的部分是 10 小时停机时间,因为这在我睡觉时使我的服务器崩溃。我在 17 日开始使用 simple_html_dom,也就是泄漏开始的时候。在 18 日到 19 日之间,我停止使用它几个小时,泄漏停止,图形再次变成一条直线(正常 ram 使用)。
【问题讨论】:
标签: php parsing memory memory-leaks garbage-collection