因此,我使用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)。
答案 0 :(得分:1)
首先取消设置($ html);不释放内存,PHP自己做。 如果您可以向我们展示泄漏内存的脚本,那么我们可以提供更多帮助