回复 K.Tomono 和 alexrussell101 at gmail dot com
是的,
headers_sent() 将返回 false,即使您使用 print() 或 header() 向输出发送了一些内容,如果 output_buffering 在您的 php.ini 中不同于 Off,并且您发送的内容长度没有超过 output_buffering 的大小。
要测试它,请使用 php.ini 中的这些值尝试以下代码
1) output_buffering=32
2) output buffering = 4096
[代码]
<?php
echo "Yo<br />";
echo "Sent:",headers_sent(),"<br />";
echo "enough text to feed the buffer until it overflows ;-)<br />";
echo "Sent:",headers_sent(),"<br />";
?>
[/code]
然后设置
3) output buffering = Off
并尝试以下代码
[代码]
<?php
echo "Yo<br />";
echo "Sent:",headers_sent(),"<br />";
?>
[/code]
这次将无条件地说标头已发送。
这在 php.ini 注释中有所说明
"输出缓冲允许您在发送主体内容之后发送标头行(包括 cookie),以牺牲稍微降低 PHP 输出层的速度为代价。"
注意:这与 implicit_flush 调整完全无关。