PHP-致命错误:已耗尽268435456字节的允许内存大小

PHP-致命错误:已耗尽268435456字节的允许内存大小,php,html,memory-leaks,garbage-collection,Php,Html,Memory Leaks,Garbage Collection,致命错误:已耗尽268435456字节的允许内存大小 我已经安装了PHP5.3版本,并添加了gc_collect_cycles() 在需要的地方 我正在使用带有大量URL(网站)的PHP simple dom库来检查它们是否良好(它检查HTML中是否有iframe和嵌入标记,如果有iframe或嵌入标记的SRC属性不同于youtube,metacafe或dailymotion会将URL标记为不良 网站是我的(不会删除任何人) 如果每次循环结束时都调用clear()方法、null、unset和gc

致命错误:已耗尽268435456字节的允许内存大小

我已经安装了PHP5.3版本,并添加了gc_collect_cycles()

在需要的地方

我正在使用带有大量URL(网站)的PHP simple dom库来检查它们是否良好(它检查HTML中是否有iframe和嵌入标记,如果有iframe或嵌入标记的SRC属性不同于youtube,metacafe或dailymotion会将URL标记为不良

网站是我的(不会删除任何人)

如果每次循环结束时都调用clear()方法、null、unset和gc_collect_循环,为什么会出现内存泄漏

   foreach ($data as $blog) {
         $htm = file_get_html($blog['blogurl']);

         if ($htm->find('iframe', 0)) {

        foreach ($htm->find('iframe') as $if) {
          if (! preg_match('/(dailymotion\.com|metacafe\.com|youtube\.com)/i', @ $if->src)) {
            //this URL i
            mark_url_not_good($blog['blogurl']);

            $htm->clear();
            $htm = null;
            unset($htm);
            gc_collect_cycles();
            continue 2;
          }
        }



      }
            $htm->clear();
            $htm = null;
            unset($htm);
            gc_collect_cycles();


     }
如果每次循环结束时都调用clear()方法、null、unset和gc_collect_循环,为什么会出现内存泄漏

   foreach ($data as $blog) {
         $htm = file_get_html($blog['blogurl']);

         if ($htm->find('iframe', 0)) {

        foreach ($htm->find('iframe') as $if) {
          if (! preg_match('/(dailymotion\.com|metacafe\.com|youtube\.com)/i', @ $if->src)) {
            //this URL i
            mark_url_not_good($blog['blogurl']);

            $htm->clear();
            $htm = null;
            unset($htm);
            gc_collect_cycles();
            continue 2;
          }
        }



      }
            $htm->clear();
            $htm = null;
            unset($htm);
            gc_collect_cycles();


     }
嗯,简单dom库中可能存在内存泄漏,垃圾收集无法修复。如果不查看您的代码,很难给出在这种情况下最好的建议


您可能希望用一个更原生的解析器(如
DOMDocument

来替换scrape功能,您真正需要的是:

$htm->__destruct();
要在每次不再需要$htm信息时清除simple_html_dom内存,例如,在您拥有的位置使用此选项:

$htm->clear();

请注意双下划线!

是否作为脚本的一部分连接到DB?连接在循环之前完成一次。您需要发布更多详细信息或代码的简化版本。@user1316394您可以键入
@
符号,然后键入您要回复的人的姓名的前几个字母,它会为您带来p a框-单击该框可将其名称自动插入到您的注释中,确保将您的注释通知其他人。+1用于添加代码。代码从数据库获取URL并循环它们。在循环中,简单dom库的新对象在循环的开始处创建,以处理HTML。@user1316394好的,这就是它的作用。它是如何处理HTML的我们需要看看你的密码。