什么是输出缓冲,为什么在PHP中使用它?什么是输出缓冲?
什么是输出缓冲?
回答
Output Buffering for Web Developers, a Beginner’s Guide:
没有输出缓冲(默认值),作为PHP处理通过脚本的HTML被发送到片浏览器。通过输出缓冲,您的HTML存储在一个变量中,并作为脚本末尾的一部分发送到浏览器。
对于Web开发人员
- 单独打开输出缓冲优势输出缓冲的减少所花费的时间来下载和渲染我们的HTML,因为它没有被发送到浏览器中的片段作为PHP处理HTML量。
- 我们可以用PHP字符串做的所有花哨的东西,我们现在可以将整个HTML页面作为一个变量来完成。
- 如果您在设置Cookie时遇到了“警告:无法修改标题信息 - 已由(输出)发送的标题”消息,您将很高兴知道输出缓冲是您的答案。
输出控制函数允许当输出从 脚本发送你 控制。这可以在 几种不同的情况下有用, 特别是如果你需要在 开始输出数据后发送标题 到浏览器。输出 控制功能不会影响 使用header()或 setcookie()发送的报头,只能使用 echo()和PHP 数据块之间的数据代码。
http://php.net/manual/en/book.outcontrol.php
更多资源:
Output buffering是使用PHP来提高性能,并执行一些技巧。
您可以让PHP将所有输出存储到缓冲区中,并立即输出所有输出以提高网络性能。
在某些情况下,您可以访问缓冲区内容而无需将其发送回浏览器。
考虑这个例子:
<?php
ob_start();
phpinfo();
$output = ob_get_clean();
?>
上面示例的输出捕获到一个变量,而不是将其发送给浏览器的。 output_buffering默认关闭。
- 在发送内容后想要修改标头的情况下,可以使用输出缓冲。
考虑这个例子:
<?php
ob_start();
echo "Hello World";
if ($some_error)
{
header("Location: error.php");
exit(0);
}
?>
这里和Ax相同的问题:没有启动输出缓冲而没有稍后关闭它,会让你的脚本遇到各种问题? – 2012-09-24 21:28:52
当您调用其中一种刷新方法(例如'ob_flush()'或'ob_end_flush()')时,刷新缓冲区。当脚本结束时,缓冲区的内容也会被刷新,突然或以其他方式,所以不应该有问题。 – 2012-09-25 06:09:51
正如名字在这里建议使用的内存缓冲区管理脚本输出的显示方式。
这里是一个very good tutorial为主题
- 1. fwrite是否缓冲输出?
- 2. 什么是缓冲区?什么是缓冲读取和写入?
- 3. 什么是缓冲区?
- 4. libdtrace缓冲输出
- 5. PHP输出缓冲
- 6. Perl缓冲输出
- 7. 输出缓冲区
- 8. 缓冲输出流
- 9. PHP输出缓冲区不是空的?
- 10. 输出流缓冲输出流附加
- 11. PHP输出缓冲堆叠
- 12. 停止PHP输出缓冲
- 13. 输出缓冲问题 - PHP
- 14. 包含输出缓冲区?
- 15. PHP输出缓冲检查?
- 16. 输出缓冲替代php
- 17. PHP输出缓冲变量
- 18. 输出缓冲,分层?
- 19. 无缓冲Bash输出
- 20. javascript输出缓冲区
- 21. 输出一个缓冲流
- 22. 输出缓冲有什么优点和缺点?
- 23. 为什么缓冲区大小会改变我的流输出?
- 24. 声音输出缓冲区冲洗
- 25. 什么是“别名”流缓冲区?
- 26. 什么是缓冲区写入?
- 27. G1 GC:什么是SATB缓冲区?
- 28. 什么数据格式是缓冲区?
- 29. 什么是Perf缓冲区大小?
- 30. 这是什么缓冲区功能?
+1。这里有另一个有用的链接:http://php.net/manual/en/function.ob-start.php - 当处理一个函数时,它也很有帮助,这个函数可以回显你希望存储在变量中的值。 – Cam 2010-05-14 06:21:59
真的是一切都缓冲到最后,或者如果我有一个很长的页面,页面是否会以大块的形式出现? – zedoo 2010-05-14 07:02:38
@zedoo如果你用'ob_start()'开始输出缓冲,*真的是所有的东西都被缓冲了。 'ob_start()','int $ chunk_size'有一个可选的第二个参数,如果设置了这个参数,将导致在任何输出调用导致缓冲区的长度等于或超过这个大小后刷新缓冲区。 – 2010-05-14 07:24:26