


In-depth understanding of PHP output caching (output_buffering)_PHP tutorial
First clarify the output order of PHP
1. Turn on the php output cache: echo,print -> php output_buffring -> server buffering -> browser buffering -> browser display
2. PHP output cache is not turned on: echo,print -> server buffering -> browser buffering -> browser display
Also make it clear The browser's output cache: 256Bytes for IE, 1000Bytes for Chrome and FireFox. Only when the output data reaches this length or the script ends, the browser will output the data on the page
Let’s talk about the use Several PHP settings and APIs:
1.output_buffering configuration in php.ini
•Off: means turning off the PHP output cache
•On: turning on the infinite output cache
• 4096: Open the output cache with a size of 4096 Byte
2.php.ini in the implicit_flush configuration
•On: Indicates that flush is automatically called after each output (such as echo, print) () function, directly output
•Off: Contrary to On, flush() will not be called after each output, and it will not be output until the server buffering is full, but we can use the flush() function instead. It doesn’t matter if it is turned on, it is more flexible
3.ob_flush() function: Take out the data in PHP buffering and put it into server buffering
4.flush() function: Take out Server buffering The data is put into browser buffering
5.ob_start() function: I don’t know much about this function now, because the output will not be clear after it is turned on. Controlled by ob_flush(), even if ob_flush() and flush() are used, the data cannot be output immediately on the browser. What is known now is that if output_buffering=Off, even if ob_start() is used, the output data cannot be cached , and if output_buffering=On, even if ob_start() is not used, the output data can be cached by PHP, so I think ob_start is relatively useless, so I will ignore it for the time being
Then let’s look at the code (setting output_buffering= 4096,implicit_flush=Off)
,1000); //IE cache 256Bytes
echo str_repeat(' ', 1000); Save it instead of directly outputting
for($i=0;$i<5;$i++) {
echo $i.'
';
ob_flush();
flush();
sleep(1);
}
?>
html>
The output result of the code here is output line by line. For the specific principle, please refer to the efficacy of the ob_flush() and flush() functions.
If any of these two functions is missing, under my setting, it will wait until 0 , 1, 2, 3, 4 are all cached and then output together
Finally, I quote a paragraph from Laruence’s blog, I hope it will be helpful to everyone’s understanding
The description of ob_flush/flush in the manual is to refresh the output buffer, and it also needs to be used in conjunction, so it will cause confusion to many people...
Actually, they operate on different objects. In some cases, flush does nothing at all..
The ob_* series of functions operate the output buffer of PHP itself.
So, ob_flush is to refresh PHP's own buffer.
Strictly speaking, flush only has an actual effect when PHP is installed as an apache Module (handler or filter). It refreshes the buffer of the WebServer (which can be considered specifically apache).
Under the sapi of apache module, flush will indirectly call the apache api by calling the flush member function pointer of sapi_module: ap_rflush refreshes the output buffer of apache. Of course, the manual also says that there are some other modules of apache. It may change the result of this action..
1. Some Apache modules, such as mod_gzip, may perform output caching by themselves,
2. This will cause the results generated by the flush() function to not be immediately cached. Sent to client browser.
3.
4. Even the browser will cache the received content before displaying it. For example, Netscape
5. The browser will cache the content until it receives a newline or the beginning of the html tag, and the entire table will not be displayed until
6. it receives the tag.
7.
8. Some versions of Microsoft Internet Explorer will only start displaying the page after receiving 256
9. bytes, so some extra spaces must be sent to make this
10. Some browsers display page content.
So, the correct order of using the two is. First ob_flush, then flush,
Of course, under other sapi, you can not call flush, just to ensure that your code For portability, it is recommended to use it together.

Hot AI Tools

Undresser.AI Undress
AI-powered app for creating realistic nude photos

AI Clothes Remover
Online AI tool for removing clothes from photos.

Undress AI Tool
Undress images for free

Clothoff.io
AI clothes remover

Video Face Swap
Swap faces in any video effortlessly with our completely free AI face swap tool!

Hot Article

Hot Tools

Notepad++7.3.1
Easy-to-use and free code editor

SublimeText3 Chinese version
Chinese version, very easy to use

Zend Studio 13.0.1
Powerful PHP integrated development environment

Dreamweaver CS6
Visual web development tools

SublimeText3 Mac version
God-level code editing software (SublimeText3)

Hot Topics

PHP 8.4 brings several new features, security improvements, and performance improvements with healthy amounts of feature deprecations and removals. This guide explains how to install PHP 8.4 or upgrade to PHP 8.4 on Ubuntu, Debian, or their derivati

If you are an experienced PHP developer, you might have the feeling that you’ve been there and done that already.You have developed a significant number of applications, debugged millions of lines of code, and tweaked a bunch of scripts to achieve op

Visual Studio Code, also known as VS Code, is a free source code editor — or integrated development environment (IDE) — available for all major operating systems. With a large collection of extensions for many programming languages, VS Code can be c

JWT is an open standard based on JSON, used to securely transmit information between parties, mainly for identity authentication and information exchange. 1. JWT consists of three parts: Header, Payload and Signature. 2. The working principle of JWT includes three steps: generating JWT, verifying JWT and parsing Payload. 3. When using JWT for authentication in PHP, JWT can be generated and verified, and user role and permission information can be included in advanced usage. 4. Common errors include signature verification failure, token expiration, and payload oversized. Debugging skills include using debugging tools and logging. 5. Performance optimization and best practices include using appropriate signature algorithms, setting validity periods reasonably,

A string is a sequence of characters, including letters, numbers, and symbols. This tutorial will learn how to calculate the number of vowels in a given string in PHP using different methods. The vowels in English are a, e, i, o, u, and they can be uppercase or lowercase. What is a vowel? Vowels are alphabetic characters that represent a specific pronunciation. There are five vowels in English, including uppercase and lowercase: a, e, i, o, u Example 1 Input: String = "Tutorialspoint" Output: 6 explain The vowels in the string "Tutorialspoint" are u, o, i, a, o, i. There are 6 yuan in total

This tutorial demonstrates how to efficiently process XML documents using PHP. XML (eXtensible Markup Language) is a versatile text-based markup language designed for both human readability and machine parsing. It's commonly used for data storage an

Static binding (static::) implements late static binding (LSB) in PHP, allowing calling classes to be referenced in static contexts rather than defining classes. 1) The parsing process is performed at runtime, 2) Look up the call class in the inheritance relationship, 3) It may bring performance overhead.

What are the magic methods of PHP? PHP's magic methods include: 1.\_\_construct, used to initialize objects; 2.\_\_destruct, used to clean up resources; 3.\_\_call, handle non-existent method calls; 4.\_\_get, implement dynamic attribute access; 5.\_\_set, implement dynamic attribute settings. These methods are automatically called in certain situations, improving code flexibility and efficiency.
