我有一个带有几个include的模板,并将Simple HTML DOM
用于各种任务。
当我进入图书馆时,在一些页面上我会收到以下错误:
致命错误:允许的内存大小134217728字节已用完(已尝试分配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的文件夹中。
尝试
$html->clear();
unset($html);
内存泄漏是由于php5循环引用内存泄漏造成的
和
?>
<?php include('dom.php'); ?>
<?php
可以用代替
include('dom.php');
只是为了保持干净:)
更换
include(…);
至
include_once(…);
将阻止您的脚本包含多个脚本。如果你需要一个脚本使其工作,你应该使用
require_once(…);
我想你的dom.php还有另一个包含。也许在包含所示代码的脚本中。另一件事是,您应该删除打开php标记后的关闭php标记,以使代码更具可读性。类似的东西
?>
<?php
不是必要的。
您可以在.htaccess 中尝试
<IfModule mod_php5.c>
php_value memory_limit 64M
</IfModule>