ob_get_length() 方法有什么用?
What is the use of the ob_get_length() method?
我知道那些与输出缓冲相关的方法:
<?php
ob_start();
// some code
ob_end_flush();
ob_end_clean();
但我不明白为什么我需要输出缓冲区的长度。这里有一个问题是关于测量用户带宽的 SOF,尽管该计算将需要测量未解决的图片和其他文件。
我确实检查了 PHP 手册,但 "why" 不存在。
ob_get_length
将 return 输出缓冲区中内容的长度..
这是一个简单的例子..
<?php
ob_start();
echo "Hello ";
$len1 = ob_get_length();
echo "World";
$len2 = ob_get_length();
ob_end_clean();
echo $len1 . ", ." . $len2;
?>
上面的例子会输出:6, 11
更新:
ob_get_length() 如果您想发送自定义 HTTP Content-Length header - 尽管这仅适用于高级用户!
正在回答 "why to use it"。要回答这个问题,首先要明白为什么要用ob_start
。
通常它有两个用途:
- 当我们要发送 HTTP headers,但不确定,之前没有渲染(第一次输出会触发 header 发送,所以如果你使用,例如
echo
,在 header
,后面不行)
- 当我们想要按块发送输出以提高性能时。 (你的代码可以写很多
echo
或 print
,而且它们通常只输出少量数据,所以你将一小部分数据发送回浏览器,这会影响性能。)
所以现在你可以开始猜了,为什么我们需要使用 ob_get_length()
。例如:我想通过大块发送我的输出,所以我启用了输出缓冲,并且在 ob_get_length
的帮助下,我可以控制在发送之前我可以写入缓冲区的数据量。
我知道那些与输出缓冲相关的方法:
<?php
ob_start();
// some code
ob_end_flush();
ob_end_clean();
但我不明白为什么我需要输出缓冲区的长度。这里有一个问题是关于测量用户带宽的 SOF,尽管该计算将需要测量未解决的图片和其他文件。
我确实检查了 PHP 手册,但 "why" 不存在。
ob_get_length
将 return 输出缓冲区中内容的长度..
这是一个简单的例子..
<?php
ob_start();
echo "Hello ";
$len1 = ob_get_length();
echo "World";
$len2 = ob_get_length();
ob_end_clean();
echo $len1 . ", ." . $len2;
?>
上面的例子会输出:6, 11
更新: ob_get_length() 如果您想发送自定义 HTTP Content-Length header - 尽管这仅适用于高级用户!
正在回答 "why to use it"。要回答这个问题,首先要明白为什么要用ob_start
。
通常它有两个用途:
- 当我们要发送 HTTP headers,但不确定,之前没有渲染(第一次输出会触发 header 发送,所以如果你使用,例如
echo
,在header
,后面不行) - 当我们想要按块发送输出以提高性能时。 (你的代码可以写很多
echo
或print
,而且它们通常只输出少量数据,所以你将一小部分数据发送回浏览器,这会影响性能。)
所以现在你可以开始猜了,为什么我们需要使用 ob_get_length()
。例如:我想通过大块发送我的输出,所以我启用了输出缓冲,并且在 ob_get_length
的帮助下,我可以控制在发送之前我可以写入缓冲区的数据量。