028-86922220

建站动态

根据您的个性需求进行定制 先人一步 抢占小程序红利时代

FixingPHPFatalError:AllowedMemorySizeExhaus

原文地址:https://www.airpair.com/php/fatal-error-allowed-memory-size
 
 

创新互联公司是一家集网站建设,织金企业网站建设,织金品牌网站建设,网站定制,织金网站建设报价,网络营销,网络优化,织金网站推广为一体的创新建站企业,帮助传统企业提升企业形象加强企业竞争力。可充分满足这一群体相比中小企业更为丰富、高端、多元的互联网需求。同时我们时刻保持专业、时尚、前沿,时刻以成就客户成长自我,坚持不断学习、思考、沉淀、净化自己,让我们为更多的企业打造出实用型网站。

1简介:为什么会发生致命错误?

 
内存不足错误是PHP开发人员遇到的最常见和难以解决的问题之一 - 特别是对于处理大量数据的应用程序 - 这要归功于PHP相对保守的默认内存设置。事实上,仅Stack Overflow上有超过1,300个与PHP内存错误相关的问题。
 
98%的时间此错误来自加载到内存中的内容比您在一个进程中设置PHP要处理的内容多。还有其他原因,但这些不太常见 - 如果您使用的是PHP 5.3及更高版本,则很少会出现内存泄漏。
 
如果您不确定您的PHP内存限制设置为什么,它将有助于包含在错误消息中。但是,大小以字节为单位报告,因此我们为您完成了一些转换:
 

3 Xdebug,瑞士×××

在任何情况下,都可以依靠一个工具来帮助诊断您正在使用的内存量以及代码中使用大量内存的位置:Xdebug。您可以使用软件包管理器如安装yum,apt-get,port,和homebrew; 安装预先构建的二进制文件; 使用pecl; 或者只是自己编译。
 
安装Xdebug之后,您只需刷新页面,或者如果您的代码要在shell中运行,请在CLI中重新运行它。PHP现在将抛出更多信息性错误,包括一个调用堆栈,它将通过文件路径,行号甚至最后调用的函数准确地告诉您脚本停止的位置。
 
如果您需要更详细的信息,您需要生成所谓的“跟踪文件”。为此,请将xdebug.auto_traceand和xdebug.show_mem_deltaconfig指令设置为1。跟踪文件通常保存在/tmp或中/var/tmp,但您可以通过查看xdebug.trace_output_dir指令来检查输出路径phpinfo()。
 
只需运行代码,即使早期内存不足,也会创建跟踪文件(包括内存使用情况)。
 
要找到问题,请从跟踪文件的底部开始,然后逐步完成。查找具有大数字的增量(带有+或 - 的数字),并记住它们以字节显示。1024字节= 1千字节。
 
完成调试后,请务必xdebug.auto_trace回到0。跟踪文件可能变得非常大,非常快,并占用磁盘空间。
 

4 PHP内存管理

这是一个关于PHP如何在内部处理内存的精彩幻灯片。
 

5挑战

使用以下脚本并尝试查明问题所在。更好的是,安装Xdebug并生成跟踪文件。

startTime = microtime(true);
    }

    function timerEnd(){
        echo number_format( (microtime(true) - $this->startTime)*1000, 2 ), ' ms';
    }
}

class ProfilerHolder {
    protected $profiler;

    public function __construct( Profiler $profiler ){
        $this->profiler = $profiler;
    }
}

ini_set('memory_limit', '1M');

$profiler = new Profiler();

$profiler->timerStart();

get_usage_in_kb();

$holder = new ProfilerHolder( $profiler );

$b = null;

/**
 * @return string
 */
function make_dummy_data()
{
    return str_repeat( "Hello|", 114242 );
}

考虑到所有这些提示,您应该能够修复任何内存耗尽错误。


本文名称:FixingPHPFatalError:AllowedMemorySizeExhaus
本文网址:http://www.tsicrk.com/article/jeceic.html
  • 网站建设专属方案

  • 网站定制化设计

  • 7X24小时服务

  • N对管家服务

让你的专属顾问为你服务

1.4063s