


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.
As 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:
#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!

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 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 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.

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 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 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 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 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


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

AI Hentai Generator
Generate AI Hentai for free.

Hot Article

Hot Tools

ZendStudio 13.5.1 Mac
Powerful PHP integrated development environment

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

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

SublimeText3 Linux new version
SublimeText3 Linux latest version

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.