; Output buffering is a mechanism for controlling how much output data
; (excluding headers and cookies) PHP should keep internally before pushing that
; data to the client. If your application's output exceeds this setting, PHP
; will send that data in chunks of roughly the size you specify.
; Turning on this setting and managing its maximum buffer size can yield some
; interesting side-effects depending on your application and web server.
; You may be able to send headers and cookies after you've already sent output
; through print or echo. You also may see performance benefits if your server is
; emitting less packets due to buffered output versus PHP streaming the output
; as it gets it. On production servers, 4096 bytes is a good setting for performance
; reasons.
; Note: Output buffering can also be controlled via Output Buffering Control
; functions.
; Possible Values:
; On = Enabled and buffer is unlimited. (Use with caution)
; Off = Disabled
; Integer = Enables the buffer and sets its maximum size in bytes.
; Note: This directive is hardcoded to Off for the CLI SAPI
; Default Value: Off
; Development Value: 4096
; Production Value: 4096
; http://php.net/output-buffering
output_buffering = 4096
// Turn on output buffering
ob_start();
echo 'Hello World'; // save to output buffer
$output = ob_get_clean(); // Get content from the output buffer, and discard the output buffer ...
$output = strtoupper($output); // manipulate the output
echo $output; // send to output stream / Browser
// OUTPUT:
HELLO WORLD
ob_start(); // turns on output buffering
$foo->bar(); // all output goes only to buffer
ob_clean(); // delete the contents of the buffer, but remains buffering active
$foo->render(); // output goes to buffer
ob_flush(); // send buffer output
$none = ob_get_contents(); // buffer content is now an empty string
ob_end_clean(); // turn off output buffering
8条答案
按热度按时间guz6ccqo1#
Output Buffering for Web Developers, a Beginner’s Guide:
如果没有输出缓冲(默认),您的HTML将在PHP通过脚本处理时被分段发送到浏览器。使用输出缓冲,您的HTML将存储在变量中,并在脚本结束时作为一个片段发送到浏览器。
输出缓冲对Web开发人员的优势
siotufzp2#
PHP使用Output buffering来提高性能并执行一些技巧。
请看这个例子:
上面的例子将输出捕获到一个变量中,而不是将其发送到浏览器。output_buffering在默认情况下是关闭的。
请看这个例子:
yb3bgrhw3#
我知道这是一个老问题,但我想为视觉学习者写我的答案。我找不到任何解释万维网上输出缓冲的图表,所以我自己在Windows
mspaint.exe
中制作了一个图表。如果输出缓冲被关闭,那么
echo
将立即将数据发送到浏览器。如果打开了输出缓冲,则
echo
将在将数据发送到浏览器之前将数据发送到输出缓冲区。phpinfo
要查看输出缓冲是否打开/关闭请参考phpinfo核心部分。
output_buffering
指令会告诉你输出缓冲是否打开/关闭。在本例中,
output_buffering
的值为4096,这意味着缓冲区大小为4 KB。这也意味着在Web服务器上打开了输出缓冲。php.ini语言
可以通过改变
output_buffering
指令的值来打开/关闭和更改缓冲区大小。只需在php.ini
中找到它,将其更改为您选择的设置,然后重新启动Web服务器。您可以在下面找到我的php.ini
示例。指令
output_buffering
并不是关于输出缓冲的唯一可配置指令。您可以在这里找到其他可配置的输出缓冲指令:http://php.net/manual/en/outcontrol.configuration.php示例:ob_get_clean()
下面您可以看到如何捕获
echo
并在将其发送到浏览器之前对其进行操作。示例:Hackingwithphp.com
有关输出缓冲区的更多信息及示例,请参见此处:
http://www.hackingwithphp.com/13/0/0/output-buffering
kyxcudwk4#
Output Control函数允许您控制何时从脚本发送输出。这在几种不同的情况下都很有用,特别是当您需要在脚本开始输出数据后向浏览器发送头时。Output Control函数不影响使用header()或setcookie()发送的头,只影响echo()等函数和PHP代码块之间的数据。
http://php.net/manual/en/book.outcontrol.php
更多资源:
**第一个e第一个f第一个x
41ik7eoe5#
顾名思义,这里的内存缓冲区用于管理脚本的输出显示方式。
以下是主题的一个very good tutorial
3okqufwl6#
缓冲区可以嵌套,所以当一个缓冲区处于活动状态时,另一个
ob_start()
会激活一个新的缓冲区。所以ob_end_flush()
和ob_flush()
并不是真正将缓冲区发送到输出,而是发送到父缓冲区。只有当没有父缓冲区时,内容才会发送到浏览器或终端。这里解释得很好:https://phpfashion.com/everything-about-output-buffering-in-php
aurhwmvo7#
更新2019.如果你有专用的服务器和SSD或更好的NVM,3.5GHZ.你不应该使用缓冲,使更快加载网站在100 ms-150 ms.
因为网络比2019年的脚本处理速度慢,性能服务器(服务器,内存,磁盘)和打开APC PHP:)生成脚本有时只需要70 ms,另一次是网络需要时间,从10 ms到150 ms。
所以如果你想快150 ms,缓冲会变慢,因为需要额外的收集缓冲数据,这会增加额外的成本。10年前,当服务器制作1 s脚本时,它是有用的。
请注意output_buffering是有限制的,如果你想用jpg来加载它,它会自动刷新和崩溃发送。
干杯。
你可以使快速河流或你可以使安全塔玛:)
mpbci0fu8#
这是php中输出缓冲的总结。(XAMPP php.ini)
输出缓冲是一种控制输出数据量的机制(不包括header和cookie)PHP应该在将该数据推送到客户端之前在内部保留。如果您的应用程序的输出超过此设置,PHP将按照您指定的大小发送数据。打开此设置并管理其最大缓冲区大小可能会产生一些有趣的副作用,具体取决于您的应用程序和Web服务器。在通过print或echo发送输出后,您可以发送header和cookie。如果您的服务器由于缓冲输出而发出的数据包较少,而不是PHP在获得输出时流式传输输出,您还可以看到性能优势。在生产服务器上,出于性能原因,4096字节是一个很好的设置。
注:输出缓冲也可以通过输出缓冲控制功能进行控制。
可能值:
开=启用,缓冲区不受限制。(请谨慎使用)
关闭=禁用
整数=启用缓冲区并设置其最大大小(字节)。
注意:对于CLI SAPI,此指令被硬编码为Off
默认值:关
开发价值:4096
产值:4096
http://php.net/output-buffering output_buffering=4096