ob_end_clean () 有时候是好的,有时候又不生效 ,还是可以输出数据,是什么原因造成的呢?

ob_end_clean() 有时候是好的,有时候又不生效 ,还是可以输出数据,是什么原因造成的呢?

讨论数量: 5

可以参考下php官方文档给出的解释:

ob_end_clean — 清空(擦除)缓冲区并关闭输出缓冲
此函数丢弃最顶层输出缓冲区的内容并关闭这个缓冲区。如果想要进一步处理缓冲区的内容,必须在ob_end_clean()之前调用ob_get_contents(),因为当调用ob_end_clean()时缓冲区内容将被丢弃
成功时返回 TRUE, 或者在失败时返回 FALSE。1 错误的原因首先是,在调用时没有一个起作用的缓冲区,2或者是因为某些原因缓冲区不能被删除(可能对特殊缓冲区而言)。

针对两点失败原因具体个人理解:

1: 必须和ob_start()标记缓冲区作用域,开始结尾。

如果ob_start前,或ob_end_clean后有echo等输出缓冲,此时ob_end_clean并不能一起清除掉

2: 特殊缓冲区

目前暂未想到,期待补充

4年前 评论
cassieyi (楼主) 4年前

看下是不是php.ini, buffer缓冲区大小设置问题导致

4年前 评论
cassieyi (楼主) 4年前

老铁什么情况

2年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!