2017-02-16 53 views
1

我知道那些与输出缓冲方法:ob_get_length()方法的用途是什么?

<?php 
ob_start(); 

// some code 

ob_end_flush(); 
ob_end_clean(); 

,但我想不出为什么将我需要的输出缓冲区的长度。这里有一个关于测量用户带宽的SOF问题,虽然这个计算需要测量未被解决的图片和其他文件。

我没有检查PHP手册和“为什么”不存在。

回答

1

回答“为什么要使用它”。为了回答这个问题,我们必须首先明白为什么我们需要使用ob_start。 通常它被用于两个目的:

  1. 当我们要发送的HTTP头信息,但我们不能确定,这之前没有渲染(第一输出将触发头发送,因此,如果您使用,echo例如,在header之前,后者将不起作用)
  2. 当我们想通过块发送我们的输出以获得性能时。所以,现在(你的代码可以有很多的echoprint写入,通常他们outputing只有很小的数据,所以你要发送的数据的一小部分返回到浏览器,这是影响性能。)

可以开始猜测,为什么我们需要使用ob_get_length()。例如:我想发送我的输出大块,所以我启用输出缓冲,并在ob_get_length的帮助下,我可以控制多少数据我可以写入缓冲区,然后再发送它。

+0

伟大的答案谢谢 – docesam

0

ob_get_length将返回的输出缓冲区中的内容的长度..

下面是简单的例子..

<?php 

ob_start(); 

echo "Hello "; 

$len1 = ob_get_length(); 

echo "World"; 

$len2 = ob_get_length(); 

ob_end_clean(); 

echo $len1 . ", ." . $len2; 
?> 

上面的示例将输出:6, 11

更新: 如果你想发送一个自定义的HTTP Content-Length头部,ob_get_length()会很有帮助 - 尽管这只适用于高级用户!

+0

问题是:为什么我需要这个信息? – docesam

+0

如果你想发送一个自定义的HTTP Content-Length头,ob_get_length()会很有帮助 - 尽管这只适用于高级用户! –