search
HomeBackend DevelopmentPHP TutorialAnalysis of basic concepts and principles of output buffer based on PHP

Analysis of basic concepts and principles of output buffer based on PHP

1. Concept

During the running of PHP, the function or operation result that generates output can be temporarily saved in the PHP buffer. Area, only when the buffer is full, or PHP has finished running, or output is performed when necessary, the data will be output to the browser. This area of ​​buffered data is called PHP's output buffer (OB).

2. Principle

①After using the buffer, when executing PHP, if you encounter codes such as echo and print_r that will output data (actual Many functions will generate output), PHP will put the data to be output into PHP's own buffer and wait for output;

②When PHP's own buffer receives an instruction, indicating that the contents of the buffer should be output When, the data in the buffer will be output to the server. The server receives the data output by PHP, and then stores the data in the server's own buffer, waiting for output;

③When the server accepts When you reach the instruction, just when you want to output the contents of the buffer, the contents of the buffer will be output and returned to the browser.

Analysis of basic concepts and principles of output buffer based on PHPAs can be seen above, the output buffer layer is not the only layer used to buffer output, it is actually just one of many layers. The last thing you need to remember is that the behavior of the output buffer layer is related to the SAPI you are using (web or cli). Different SAPIs may have different behaviors.

As mentioned in the first concept, the buffered data will be output when the buffer is full. This is related to SAPI. The buffer is mainly controlled through the output_buffering variable in php.ini. The default of output_buffering is on, and the default value is 4096 (4kb).

3. Output buffer configuration

1. Taking the SAPI of PHP-FPM that we usually use as an example, here is a summary of the PHP ini file configuration: There are mainly three options:

output_buffering
implicit_flush
output_handler

Use a table to clarify the meaning of these three parameters:

Analysis of basic concepts and principles of output buffer based on PHP

#Note that the above three values ​​cannot be changed using ini_set() at runtime. value.

2. Regarding the configuration when executing in PHP CLI mode, it is different from FPM. There are a few points to note:

(1) The output_buffering parameter is not enabled by default,

(2) The implicit_flush parameter is set to 1 (on) by default.

3. Regarding the output_handler setting callback function, you can refer to several common settings:

①ob_gzhandler: use ext/zlib to compress the output;

②mb_output_handler: use ext/mbstring conversion Character encoding;

③ob_iconv_handler: Use ext/iconv to convert character encoding;

④ob_tidyhandler: Use ext/tidy to organize the output HTML text;

⑤ob_[inflate/deflate]_handler : Use ext/http to compress output;

⑥ob_etaghandler: Use ext/http to automatically generate HTTP Etag;

4. Output buffer related methods

ob_start(); //Open an output buffer. All output information is no longer sent directly to the next layer, but is saved in the output buffer.
ob_clean(); //Delete the contents of the internal buffer without closing the buffer (no output).
ob_end_clean(); //Delete the contents of the internal buffer and close the buffer (no output).
ob_get_clean(); //Return the contents of the internal buffer and close the buffer.
ob_flush(); //Send the buffer content to the next layer, delete the buffer content, and do not close the buffer.
ob_end_flush(); //Send the buffer content to the next layer, delete the buffer content, and close the buffer.
ob_get_flush(); //Return the contents of the buffer, close the buffer, and then release the contents of the buffer.
ob_get_contents(); //Return the contents of the buffer without output.
ob_get_length(); //Returns the length of the buffer. If the buffer is not activated, returns FALSE.
ob_get_status() ; //Get the status of all output buffers.
ob_implicit_flush(); //Turn on/off absolute flushing.

5. Application of output buffer

1. Open before session, cookie, header and other setting functions:

The most common one is Before using the header function, some data has been output, which will lead to certain errors, such as Cannot modify header information – headers already sent by;

The reason for this error is that it has been output before the header. Certain data, and while outputting this data, the server will also send a response status to the browser (since there is output, the request is valid), and then you use the header function again

Send the http header, and this error will be returned. The error means: the HTTP header has been sent, and you cannot modify it.

So you can enable the ob_start method at the beginning.

2. Control the download function of PHP program:

Usually many people use PHP to download files. However, when the size of a file is too large (such as 100M), if it is read into the memory first and then transferred to user, the response time will be greatly lengthened (or even timeout), and the memory usage will also be greatly increased (or even overflow).

Using output buffering, you can read the read file into the buffer, transfer it to the user when it reaches a certain size, and then continue reading to achieve the effect of sharding. In this way, the browser can continue to receive data without having to wait until all files are read, and the memory will not take up too much.

3. Cache as static files:

Files that need to be read multiple times and have a very low frequency of modification will be placed in the buffer when read for the first time to generate static files. , each subsequent read can be returned directly without going through PHP processing (reading the database, etc.).

For more PHP related technical articles, please visit the PHP Tutorial column to learn!

The above is the detailed content of Analysis of basic concepts and principles of output buffer based on PHP. For more information, please follow other related articles on the PHP Chinese website!

Statement
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
PHP in Action: Real-World Examples and ApplicationsPHP in Action: Real-World Examples and ApplicationsApr 14, 2025 am 12:19 AM

PHP is widely used in e-commerce, content management systems and API development. 1) E-commerce: used for shopping cart function and payment processing. 2) Content management system: used for dynamic content generation and user management. 3) API development: used for RESTful API development and API security. Through performance optimization and best practices, the efficiency and maintainability of PHP applications are improved.

PHP: Creating Interactive Web Content with EasePHP: Creating Interactive Web Content with EaseApr 14, 2025 am 12:15 AM

PHP makes it easy to create interactive web content. 1) Dynamically generate content by embedding HTML and display it in real time based on user input or database data. 2) Process form submission and generate dynamic output to ensure that htmlspecialchars is used to prevent XSS. 3) Use MySQL to create a user registration system, and use password_hash and preprocessing statements to enhance security. Mastering these techniques will improve the efficiency of web development.

PHP and Python: Comparing Two Popular Programming LanguagesPHP and Python: Comparing Two Popular Programming LanguagesApr 14, 2025 am 12:13 AM

PHP and Python each have their own advantages, and choose according to project requirements. 1.PHP is suitable for web development, especially for rapid development and maintenance of websites. 2. Python is suitable for data science, machine learning and artificial intelligence, with concise syntax and suitable for beginners.

The Enduring Relevance of PHP: Is It Still Alive?The Enduring Relevance of PHP: Is It Still Alive?Apr 14, 2025 am 12:12 AM

PHP is still dynamic and still occupies an important position in the field of modern programming. 1) PHP's simplicity and powerful community support make it widely used in web development; 2) Its flexibility and stability make it outstanding in handling web forms, database operations and file processing; 3) PHP is constantly evolving and optimizing, suitable for beginners and experienced developers.

PHP's Current Status: A Look at Web Development TrendsPHP's Current Status: A Look at Web Development TrendsApr 13, 2025 am 12:20 AM

PHP remains important in modern web development, especially in content management and e-commerce platforms. 1) PHP has a rich ecosystem and strong framework support, such as Laravel and Symfony. 2) Performance optimization can be achieved through OPcache and Nginx. 3) PHP8.0 introduces JIT compiler to improve performance. 4) Cloud-native applications are deployed through Docker and Kubernetes to improve flexibility and scalability.

PHP vs. Other Languages: A ComparisonPHP vs. Other Languages: A ComparisonApr 13, 2025 am 12:19 AM

PHP is suitable for web development, especially in rapid development and processing dynamic content, but is not good at data science and enterprise-level applications. Compared with Python, PHP has more advantages in web development, but is not as good as Python in the field of data science; compared with Java, PHP performs worse in enterprise-level applications, but is more flexible in web development; compared with JavaScript, PHP is more concise in back-end development, but is not as good as JavaScript in front-end development.

PHP vs. Python: Core Features and FunctionalityPHP vs. Python: Core Features and FunctionalityApr 13, 2025 am 12:16 AM

PHP and Python each have their own advantages and are suitable for different scenarios. 1.PHP is suitable for web development and provides built-in web servers and rich function libraries. 2. Python is suitable for data science and machine learning, with concise syntax and a powerful standard library. When choosing, it should be decided based on project requirements.

PHP: A Key Language for Web DevelopmentPHP: A Key Language for Web DevelopmentApr 13, 2025 am 12:08 AM

PHP is a scripting language widely used on the server side, especially suitable for web development. 1.PHP can embed HTML, process HTTP requests and responses, and supports a variety of databases. 2.PHP is used to generate dynamic web content, process form data, access databases, etc., with strong community support and open source resources. 3. PHP is an interpreted language, and the execution process includes lexical analysis, grammatical analysis, compilation and execution. 4.PHP can be combined with MySQL for advanced applications such as user registration systems. 5. When debugging PHP, you can use functions such as error_reporting() and var_dump(). 6. Optimize PHP code to use caching mechanisms, optimize database queries and use built-in functions. 7

See all articles

Hot AI Tools

Undresser.AI Undress

Undresser.AI Undress

AI-powered app for creating realistic nude photos

AI Clothes Remover

AI Clothes Remover

Online AI tool for removing clothes from photos.

Undress AI Tool

Undress AI Tool

Undress images for free

Clothoff.io

Clothoff.io

AI clothes remover

AI Hentai Generator

AI Hentai Generator

Generate AI Hentai for free.

Hot Article

R.E.P.O. Energy Crystals Explained and What They Do (Yellow Crystal)
3 weeks agoBy尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Best Graphic Settings
3 weeks agoBy尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. How to Fix Audio if You Can't Hear Anyone
3 weeks agoBy尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: How To Unlock Everything In MyRise
1 months agoBy尊渡假赌尊渡假赌尊渡假赌

Hot Tools

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

Powerful PHP integrated development environment

SublimeText3 Mac version

SublimeText3 Mac version

God-level code editing software (SublimeText3)

Notepad++7.3.1

Notepad++7.3.1

Easy-to-use and free code editor

SublimeText3 Linux new version

SublimeText3 Linux new version

SublimeText3 Linux latest version

MantisBT

MantisBT

Mantis is an easy-to-deploy web-based defect tracking tool designed to aid in product defect tracking. It requires PHP, MySQL and a web server. Check out our demo and hosting services.