ob_get_length()方法有什么用?

时间:2017-02-16 11:13:10

标签: php output-buffering

我知道那些与输出缓冲有关的方法:

<?php
ob_start();

// some code

ob_end_flush();
ob_end_clean();

但我无法弄清楚为什么我需要输出缓冲区的长度。这里有一个问题是关于测量用户带宽的SOF,尽管该计算需要测量图片和其他未解决的文件。

我确实检查了PHP手册,并没有“为什么”。

2 个答案:

答案 0 :(得分:1)

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

  1. 当我们想要发送HTTP标头时,但我们不确定,之前没有呈现(第一个输出将触发标头发送,因此如果您使用echo,例如header之前},后者不起作用)
  2. 当我们想要通过块发送我们的输出以获得性能时。 (您的代码可以使用大量echoprint编写,并且通常只输出小数据,因此您将一小部分数据发送回浏览器,这会影响性能。)
  3. 所以现在你可以开始猜测,为什么我们需要使用ob_get_length()。例如:我想通过大块发送我的输出,所以我启用输出缓冲并在ob_get_length的帮助下,我可以控制在发送之前可以写入多少数据缓冲区。

答案 1 :(得分: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()会很有用 - 尽管这仅适用于高级用户!