首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >致命错误:允许内存耗尽

问致命错误:允许内存耗尽
EN

Stack Overflow用户
提问于 2010-05-05 10:07:31
回答 7查看 5.1K关注 0票数 1

嗨,我刚刚把我的php测试脚本上传到在线vps服务器上。这个脚本用于解析一个较大的XML文件(大约4M,7000行)。但是我的IE浏览器显示了下面的在线错误消息。

致命错误:允许在/var/www/test//index.php第26行中耗尽内存16777216字节(尝试分配77字节)

我确信我已经成功地在localhost上测试了php脚本。

在我的VPS上是否需要启用/修改任何配置?例如php.ini或apache服务器的某些设置?我刚刚证实,有大约200米的内存使用是可以为我的VPS。我怎么才能解决这个问题?

代码语言:javascript
复制
......
function startElementHandler ($parser,$name,$attrib){
    global $usercount;
    global $userdata;
    global $state; // Line #26; 
    //Debug
    //print "name is: ".$name."\n";
    switch ($name) {
        case $name=="_ID" : {
        $userdata[$usercount]["first"] = $attrib["FIRST"];
        $userdata[$usercount]["last"] = $attrib["LAST"];
        $userdata[$usercount]["nick"] = $attrib["NICK"];
        $userdata[$usercount]["title"] = $attrib["TITLE"];
        break;
        }

        ......

        default : {$state=$name;break;}
    }
}
EN

回答 7

Stack Overflow用户

回答已采纳

发布于 2010-05-05 10:09:24

您的PHP配置将PHP限制为16 to内存。您需要修改memory_limit配置指令在php.ini中以增加它。

查找php.ini中如下所示的行:

代码语言:javascript
复制
memory_limit = 16M

...and改为大值(16M = 16 et,您可以将其增加到64 et的64M之类的值)。如果找不到这样的行,就加起来。

如果您只希望在每个脚本的基础上增加它,您也可以使用ini_set()来更改该脚本的值。

票数 3
EN

Stack Overflow用户

发布于 2010-05-05 10:13:01

您也可以使用使用()来找出程序的哪一部分正在消耗您的内存。

票数 2
EN

Stack Overflow用户

发布于 2010-05-05 10:25:19

使用SAX解析器而不是DOM解析器,您将不会耗尽内存。DOM占用的内存是实际文档流的8-10倍,而SAX具有合理的恒定开销,而不管文档大小如何。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2772198

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档