我的大多数PHP应用程序在开头都有一个ob_start,遍历所有代码,然后在完成所有操作后输出内容,有时会进行一些修改.
ob_start() //Business Logic, etc header->output(); echo apply_post_filter(ob_get_clean()); footer->output();
这可确保PHP错误显示在网站的内容部分中,并且错误不会干扰header
和session_*
调用.
我唯一的问题是,对于一些大页面PHP运行内存不足.我如何阻止这种情况发生?
一些想法:
将所有缓冲的内容写入临时文件并输出.
当缓冲区达到一定大小时,输出它.虽然这可能会干扰后置滤波器.
提高内存限制(thanx @troelskn).
这些方法的缺点是什么?特别是提高内存限制?
你不能提高内存限制吗?对我来说听起来是最好的解决方案.
编辑:显然,提高内存限制只是因为脚本最高应该会引起一些危险信号,但听起来像这是一个合法的案例 - 例如.该脚本实际上产生了相当大的输出块.因此,您必须将输出存储在某处,并且出于性能和便利的原因,内存似乎是最佳选择.
我还应该注意内存限制设置只是 - 一个限制.不消耗大量内存的脚本不会因为提高限制而消耗更多内存.它存在的主要原因是防止行为不端/错误的脚本取下整个服务器.如果你有很多业余爱好者在共享主机上进行攻击,那么这一点非常重要(PHP已被大量使用).因此,如果这是您自己的服务器,或者至少您通常知道自己在做什么,那么内存限制不会带来任何好处.