Php 简单的HTMLDOM在包含时会导致内存耗尽

Php 简单的HTMLDOM在包含时会导致内存耗尽,php,memory-leaks,simple-html-dom,Php,Memory Leaks,Simple Html Dom,我有一个带有几个include的模板,并使用simplehtmldom执行各种任务 当我导入库时,在某些页面上出现以下错误: 致命错误:允许的内存大小134217728字节已用尽(已尝试 要在C:\xampp\htdocs\aa\template.php中在线分配28672字节) 142 这是我在模板中的php代码: <?php $currentFile = $_SERVER["PHP_SELF"]; $parts = Explode('/', $currentFile); $page

我有一个带有几个include的模板,并使用
simplehtmldom
执行各种任务

当我导入库时,在某些页面上出现以下错误:

致命错误:允许的内存大小134217728字节已用尽(已尝试 要在C:\xampp\htdocs\aa\template.php中在线分配28672字节) 142

这是我在模板中的php代码:

<?php
$currentFile = $_SERVER["PHP_SELF"];
$parts = Explode('/', $currentFile); 
$page = $parts[count($parts) - 1];
$parent = basename(dirname($_SERVER['PHP_SELF']));
$both = $parent.'/'.$page;
$content = $filename.".html";
$sidebar = $filename. "-sidebar.html";

?>
<?php include('dom.php'); ?>
<?php 

if (!isset($title)) {
$html = file_get_html($_SERVER['DOCUMENT_ROOT'].'/aa/content/'.$content);

$element = $html->find('h1'); 
if ($element) {
$titletag = $element[0]->plaintext . ' | about-berlin.com';
}

    }
else {
$titletag = $title; 
}
$html->__destruct();
?>
<!DOCTYPE html>

在模板中,相同名称的内容文件(somepage.php)包含在名为content的文件夹中。

您可以在.htaccess中尝试

<IfModule mod_php5.c>
php_value memory_limit 64M
</IfModule>

php_值内存_限制64M

您可以在.htaccess中尝试

<IfModule mod_php5.c>
php_value memory_limit 64M
</IfModule>

php_值内存_限制64M
更换您的

include(…);

将阻止您的脚本使用多包含脚本。如果你需要一个脚本来让它工作,你应该使用

require_once(…);
我想还有另一个包含dom.php的地方。可能在包含所示代码的脚本中。 另一件事是,您应该删除打开php标记之后的关闭php标记,以使代码更具可读性。差不多

?>
<?php
?>
替换您的

include(…);

将阻止您的脚本使用多包含脚本。如果你需要一个脚本来让它工作,你应该使用

require_once(…);
我想还有另一个包含dom.php的地方。可能在包含所示代码的脚本中。 另一件事是,您应该删除打开php标记之后的关闭php标记,以使代码更具可读性。差不多

?>
<?php
?>
试一试

内存泄漏是由于php5循环引用内存泄漏造成的

只是为了保持干净:)

试试看

$html->clear(); 
unset($html);
内存泄漏是由于php5循环引用内存泄漏造成的


为了保持整洁:)

template.php的第142行中有什么代码?首先,您应该尝试在文件中包含一次或要求包含一次,这样它就不会被双重包含。第142行是结束标记。但是,dom.php包含在其中,所以可能第142行实际上就在其中?您是否在循环中调用该脚本?您在哪里定义$content?请更新你的第一篇文章,让我们看看更多的代码…我更新了我的问题,脚本不在循环中,但模板包含在请求的文件中。在模板中包含dom和内容。问题只出现在其中一个文件夹中,而在我的其他文件夹中没有出现。。。那个文件夹好像有问题?!template.php的第142行是什么代码?首先,您应该尝试在文件中包含一次或要求包含一次,这样它就不会被双重包含。第142行是结束标记。但是,dom.php包含在其中,所以可能第142行实际上就在其中?您是否在循环中调用该脚本?您在哪里定义$content?请更新你的第一篇文章,让我们看看更多的代码…我更新了我的问题,脚本不在循环中,但模板包含在请求的文件中。在模板中包含dom和内容。问题只出现在其中一个文件夹中,而在我的其他文件夹中没有出现。。。那个文件夹好像有问题?!我认为128MB允许的RAM应该足够一个脚本:)我认为128MB允许的RAM应该足够一个脚本:)
include('dom.php');