当前位置:  开发笔记 > 编程语言 > 正文

如何阻止PHP输出缓冲区超过内存限制?

如何解决《如何阻止PHP输出缓冲区超过内存限制?》经验,为你挑选了1个好方法。

我的大多数PHP应用程序在开头都有一个ob_start,遍历所有代码,然后在完成所有操作后输出内容,有时会进行一些修改.

ob_start()
//Business Logic, etc
header->output();
echo apply_post_filter(ob_get_clean());
footer->output();

这可确保PHP错误显示在网站的内容部分中,并且错误不会干扰headersession_*调用.

我唯一的问题是,对于一些大页面PHP运行内存不足.我如何阻止这种情况发生?

一些想法:

    将所有缓冲的内容写入临时文件并输出.

    当缓冲区达到一定大小时,输出它.虽然这可能会干扰后置滤波器.

    提高内存限制(thanx @troelskn).

这些方法的缺点是什么?特别是提高内存限制?



1> troelskn..:

你不能提高内存限制吗?对我来说听起来是最好的解决方案.

编辑:显然,提高内存限制只是因为脚本最高应该会引起一些危险信号,但听起来像这是一个合法的案例 - 例如.该脚本实际上产生了相当大的输出块.因此,您必须将输出存储在某处,并且出于性能和便利的原因,内存似乎是最佳选择.

我还应该注意内存限制设置只是 - 一个限制.不消耗大量内存的脚本不会因为提高限制而消耗更多内存.它存在的主要原因是防止行为不端/错误的脚本取下整个服务器.如果你有很多业余爱好者在共享主机上进行攻击,那么这一点非常重要(PHP已被大量使用).因此,如果这是您自己的服务器,或者至少您通常知道自己在做什么,那么内存限制不会带来任何好处.

推荐阅读
小白也坚强_177
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有