在上一篇有关ob_start()的文章中,我们学习了如何启动输出缓冲区。现在我们需要结束输出缓冲,并将整个HTML发送到浏览器进行渲染。我们可以借助ob_end_flush()和ob_end_clean()函数来完成此操作。
ob_end_flush()函数
用法:
bool ob_end_flush ()
参数:该函数没有任何参数。
返回类型:此函数将存储的HTML发送到浏览器并关闭输出缓冲。成功时,返回TRUE,否则返回FALSE。
ob_end_clean()函数
用法:
bool ob_end_clean()
参数:该函数没有任何参数。
返回类型:此函数清除存储的HTML并关闭输出缓冲。成功时,返回TRUE,否则返回FALSE。
以下示例程序旨在说明PHP中ob_end_flush()和ob_end_clean()的工作:
<?php
// PHP code to illustrate the working of
// ob_end_flush() and ob_end_clean()
// ob_end_flush()
ob_start();
echo "Hello Geek!"; //This will get printed.
ob_end_flush();
// ob_end_clean()
ob_start();
echo "Hi Geek!"; //This will not get printed.
ob_end_clean();
?>
输出:
Hello Geek!
注意事项:
- ob_end_flush()或ob_end_clean()不是必需的函数,即,如果开发人员在未使用上述函数的情况下使用ob_start(),则该网页似乎可以正常显示所有内容,但是背后发生的事情却远未优化。当PHP遇到ob_start()时,它将分配一个新的输出缓冲区并连接出现在其后的每个HTML,如果没有终止函数,则在存储结束时将存储的数据作为默认操作发送到浏览器。开发人员可以通过在不需要时终止输出缓冲来创建优化的网页,从而使全局堆栈保持清晰。
- 这就提出了一个问题,如果我们使用ob_end_clean()来清理整个输出缓冲区,那为什么还要使用输出缓冲呢?我们将ob_end_clean()与ob_get_contents()一起使用,后者首先将内容作为字符串获取,然后清除并关闭输出缓冲区,这将清除全局堆栈并将整个内容保留在变量中以供进一步处理。
参考:
- http://php.net/manual/en/function.ob-end-flush.php
- http://php.net/manual/en/function.ob-end-clean.php
相关用法
注:本文由纯净天空筛选整理自PronabM大神的英文原创作品 PHP | ob_end_flush(), ob_end_clean() Functions。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。