The charm of php output caching
The charm of php output cache
1: Introduction to output cache
The so-called output cache in php is that the echo or other output commands in the code are first written to the php buffer when executing, and after the script is executed or forced The data will be output to the browser only after the output cache command is executed (php buffer is the output_buffering set in php.ini, the default is on, indicating unlimited size, and can be changed to a number to limit the size).
Example:
echo 'hlmblog.com';
echo 'Technology';
echo 'Sharing';
These two echoes are inserted into the buffer in order, only when the script execution is completed or the output is forced to be cached Only then will the data be output to the browser.
If I want to output echo data in real time, see the code below:
I want to output echo data in real time, see the code below:
ob_end_flush(); //Close php cache, or flush () execute ob_flush() first, as explained below
echo str_pad(" ", 256);
for ($i=5; $i>0; $i--) {
echo $i. '
When php.ini does not enable the php buffer cache, the content output by the php script will be in a state of waiting for output on the server and will not be saved to the output cache because the cache is not turned on. At this time, flush can be used to flush the content waiting for output. Immediately output to the client (browser or other output terminal).
When php.ini turns on the php buffer cache, the first step of the php script output content is to store it in the output cache. At this time, there is no data in the output content. Using flush has no effect and the data cannot be obtained. . Therefore, we must first use ob_flush to take out the content from the output cache and put it in a state waiting for output, and then use flush to send the content to the client. The order of execution is ob_flush first and then flush.
So to achieve real-time output, either use ob_end_flush to turn off the php output cache and then flush directly, or ob_flush first and then flush.
2: The browser cannot output real-time data
Change the code to the following code. In Chrome, Firefox, IE and other browsers, it is output all at once. It is a very strange phenomenon:
ob_end_flush(); //Close php cache, or Before flush ob_flush();
echo str_pad(" ", 256);
for ($i=5; $i>0; $i--) {
echo $i;
flush();
sleep(1 );
}
After looking for bugs for a long time, I finally discovered a phenomenon. Just add an html tag by the way and you can output it in real time.
The reason is: it will be output immediately only when it encounters an html tag. It is really magical. Fortunately, the output content will generally have html tags and rarely plain text.
Solution: Add a carriage return or other html tag to solve the problem.
Two: What can be used to control the cache output, a few specific examples
1: Generate static pages
The loading speed of static pages is fast, this sentence is a well-known truth, there is no need to request the database, this is how What a cool thing.
The following is an example of generating a static page:
echo str_pad('', 1024);//Overflow the buffer
ob_start();//Open the buffer
$content = ob_get_contents();//Get the page output Content
$f = fopen('./index.html', 'w');
fwrite($f, $content);//The content is written into the txt file
fclose($f);
ob_end_clean();/ /Clear and close the buffer
The legendary static page is simply generated like this.
2: Capture the output
function test($param) {
if($param) {
ob_start();
eval($param);
$contents = ob_get_contents();
ob_end_clean();
}else {
echo 'Unfortunately no output';
exit();
}
return $contents;
}

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,

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

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

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.
