[分享]Php中多次调用了ob_start(),ob_end_flush()

2013-09-01PHP2430

假设在Php代码中多次调用了 ob_start()而ob_end_flush()调用的次数比ob_start()少2次,那么这段代码可能不能正常工作。

因为 ob_start()的buffer是stackable的。调用多次ob_start()后,ob_flush()只会把buffer输出到上一层的 buffer中。

例如

调用ob_start(),它的缓存区为 buffer1,再次调用ob_start(),它的缓存区为buffer2。

这时调用ob_flush()只会把 buffer2中的内容输出到 buffer1。

这时如果调用 ob_end_flush(), 那么buffer2中的内容会被输出到 buffer1并且销毁buffer2。

此时再调用ob_flush()就会把buffer1中的内容输出到服务器,然后调用flush()则可以把服务 器中的buffer输出到客户端浏览器。

知道了ob_start()和ob_end_flush()的用法后,就可以用下面的代码来实现所有页面内容完全生成后一次性输出所有的缓存。


  • 相关文章
  • 查看评论:(0)
【已经有0位大神发现了看法】

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

分享:

支付宝

微信