Home > Backend Development > PHP Problem > How php is parsed

How php is parsed

王林
Release: 2023-02-24 13:24:01
Original
3041 people have browsed it

How php is parsed

To understand the parsing process of php, you must first understand the related concepts of cgi, fastcgi, and php-fpm.

What is cgi?

cgi (Common Gateway Interface) is actually a protocol. The program that implements the cgi protocol can be called a cgi program. CGI applications can interact with the browser and can also interact with the database API Communicate with external data sources such as database servers and obtain data from the database servers. After formatting into an HTML document, it is sent to the browser, or the data obtained from the browser can be put into the database. And php-cgi is a protocol used to parse PHP code. But this agreement has several drawbacks.

First of all, whenever the client requests a PHP script file, the server will fork a process and call the parser to parse the script. When the script is executed, the process will be killed, and Each fork process will go through php.ini to initialize the environment. The process cannot be reused, and the IO overhead of php.ini is increased. Limits the execution speed of PHP. So the smart phper came up with a better cgi protocol, which was the fastcgi protocol that came out later.

fastcgi protocol

Gu Mingsi thought, faster cgi protocol. So where is he soon?

First of all, fastcg solves the problems of the original php-cgi. It allows multiple requests to be processed in one process, instead of directly ending the process after one request is processed. This greatly improves the performance of the web server. improve. In fact, Fastcgi will first start a master, parse the configuration file, initialize the execution environment, and then start multiple workers.

When a request comes, the master will pass it to a worker, and then the next request can be accepted immediately. This avoids duplication of work and is naturally highly efficient. And when there are not enough workers, the master can pre-start several workers according to the configuration and wait; of course, when there are too many idle workers, some will be stopped, which improves performance and saves resources.

php-fpm

PHP-FPM (FastCGI Process Manager: FastCGI Process Manager) is a PHPFastCGI manager for php before PHP 5.3.3 , is a patch package designed to integrate FastCGI process management into PHP packages.

If you are using PHP before PHP5.3.3, you must patch it into your PHP source code, and you can use it after compiling and installing PHP. In fact, we can think of php-fpm as an interpreter. We can use the command: ps -aux | grep php-fpm to view the corresponding process status, as shown below:

How php is parsed

Using php-fpm can restart smoothly, general modifications After php.ini, the php-cgi process cannot be restarted smoothly, which means you must restart the service to reload the new configuration. The php-fpm processing mechanism for this is that new workers use new configurations, and existing workers can rest after processing the work at hand. This mechanism is used to smooth the transition.

PHP code parsing process:

1. Scanning (Lexing), convert PHP code into language fragments (Tokens).

2. Parsing, converting Tokens into simple and meaningful expressions.

3. Compilation, compile expressions into Opocdes.

4. Execution, execute Opcodes sequentially, one at a time, to realize the function of PHP script.

Now some Cache, such as APC, can enable PHP to cache Opcodes. In this way, every time a request comes, there is no need to repeat the first three steps, which can greatly improve the execution of PHP. speed.

Recommended tutorial: PHP video tutorial

The above is the detailed content of How php is parsed. For more information, please follow other related articles on the PHP Chinese website!

Related labels:
source:php.cn
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
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template