PHP: Hypertext Preprocessor (original) (raw)
ob_get_length
(PHP 4 >= 4.0.2, PHP 5, PHP 7, PHP 8)
ob_get_length — Return the length of the output buffer
Description
Parameters
This function has no parameters.
Return Values
Returns the length of the output buffer contents, in bytes, or [false](reserved.constants.php#constant.false)
if no buffering is active.
Examples
Example #1 A simple ob_get_length() example
`<?php
ob_start
();
echo
"Hello ";$len1 = ob_get_length();
echo
"World";$len2 = ob_get_length();ob_end_clean();
echo
len1.",".len1 . ", " . len1.",".len2;
?>`
The above example will output:
See Also
- ob_start() - Turn on output buffering
- ob_get_contents() - Return the contents of the output buffer
Found A Problem?
16 years ago
`I use this function to produce a small speed test in my pages since I run my website from my home computers.
.. webpage data goes here ..
Note: don't forget the "speed" depends on how quick the content is actually generated and not on the speed the data is sent to the client..
However it would be good to see such function to get the real speed. :)
Nitrogen.
`
19 years ago
`There is a work-around for the situation you need to get length of the gz-ed buffer.
ob_start();
ob_start('ob_gzhandler');
... output the page content...
ob_end_flush(); // The ob_gzhandler one
header('Content-Length: '.ob_get_length());
ob_end_flush(); // The main one
more info at http://www.edginet.org/techie/website/http.html
`
stangelanda at arrowquick dot com ¶
17 years ago
`If you don't buffer your output, it doesn't seem like it would be possible for a web server to output a Content-Length header. For static files it can check the filesize, but for dynamic files that send output a little by little there is no way to know how many bytes it is going to output. And the headers have to be sent before a single byte is output.
Also if you're wondering why the Content-Length is important, the browser doesn't close the connection as long as the script is running. So if you register time consuming shutdown functions, the browser will still 'spin' waiting for more content until they complete. (I'm not sure this happens under all conditions, but I am certain the sending the Content-Length always prevents this.)
You might take note that this manual page does not currently output any Content-Length header.
Alternatively using mb_strlen($output, 'latin1') seems to work to determine bytes in a string. strlen may or may not depending on if it has been set up as a multibyte or not.
`