Home Backend Development PHP Tutorial Analysis of basic concepts and principles of output buffer based on PHP

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

Jun 24, 2019 pm 05:26 PM
php basic concept

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 of this Website
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

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)
4 weeks ago By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Best Graphic Settings
4 weeks ago By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. How to Fix Audio if You Can't Hear Anyone
4 weeks ago By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Chat Commands and How to Use Them
4 weeks ago By 尊渡假赌尊渡假赌尊渡假赌

Hot Tools

Notepad++7.3.1

Notepad++7.3.1

Easy-to-use and free code editor

SublimeText3 Chinese version

SublimeText3 Chinese version

Chinese version, very easy to use

Zend Studio 13.0.1

Zend Studio 13.0.1

Powerful PHP integrated development environment

Dreamweaver CS6

Dreamweaver CS6

Visual web development tools

SublimeText3 Mac version

SublimeText3 Mac version

God-level code editing software (SublimeText3)

PHP 8.4 Installation and Upgrade guide for Ubuntu and Debian PHP 8.4 Installation and Upgrade guide for Ubuntu and Debian Dec 24, 2024 pm 04:42 PM

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

How To Set Up Visual Studio Code (VS Code) for PHP Development How To Set Up Visual Studio Code (VS Code) for PHP Development Dec 20, 2024 am 11:31 AM

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

7 PHP Functions I Regret I Didn't Know Before 7 PHP Functions I Regret I Didn't Know Before Nov 13, 2024 am 09:42 AM

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

How do you parse and process HTML/XML in PHP? How do you parse and process HTML/XML in PHP? Feb 07, 2025 am 11:57 AM

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

Explain JSON Web Tokens (JWT) and their use case in PHP APIs. Explain JSON Web Tokens (JWT) and their use case in PHP APIs. Apr 05, 2025 am 12:04 AM

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,

PHP Program to Count Vowels in a String PHP Program to Count Vowels in a String Feb 07, 2025 pm 12:12 PM

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

Explain late static binding in PHP (static::). Explain late static binding in PHP (static::). Apr 03, 2025 am 12:04 AM

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 PHP magic methods (__construct, __destruct, __call, __get, __set, etc.) and provide use cases? What are PHP magic methods (__construct, __destruct, __call, __get, __set, etc.) and provide use cases? Apr 03, 2025 am 12:03 AM

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.

See all articles