【发布时间】:2013-07-24 16:59:42
【问题描述】:
我有一个包含几个包含的模板,并将Simple HTML DOM 用于各种任务。
当我包含库时,在某些页面上出现以下错误:
致命错误:允许的内存大小为 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>
奇怪的是,即使我只包含这样的库,而没有任何代码使用它,我也会遇到同样的内存错误:
<?php include('dom.php'); ?>
如果我不包含它,一切都会正常运行。
即使不使用似乎是造成大多数问题的原因的file_get_html(),怎么可能得到这个错误?我可以在不更改 php.ini 的情况下尝试解决此问题吗?
编辑:
一些澄清。我的模板是这样工作的:
somepage.php 被请求。 里面是如下代码:
<?php
$path_parts = pathinfo(__FILE__);
$filename = $path_parts['filename'];
include ($_SERVER['DOCUMENT_ROOT'].'/aa/template.php');
?>
在模板中,同名的内容文件 (somepage.php) 包含在名为 content 的文件夹中。
【问题讨论】:
-
template.php 的第 142 行是什么代码?首先你应该尝试 include_once 或 require_once 文件,所以它不会被双重包含。
-
第 142 行是结束 li 标签。但是 dom.php 被包含在那里,所以实际上可能第 142 行在里面?
-
您是否在循环中调用该脚本?你在哪里定义 $content?请更新您的第一篇文章,让我们看看更多代码...
-
我更新了我的问题,脚本不在循环内,但模板包含在请求的文件中。在模板内包含 dom 和内容
-
问题仅出现在其中一个文件夹中,但在我的其他文件夹中均未出现...该文件夹似乎有问题?!
标签: php memory-leaks simple-html-dom