Home Backend Development PHP Tutorial Detailed explanation of how php works

Detailed explanation of how php works

Mar 15, 2018 pm 01:05 PM
php principle Detailed explanation

1. All PHP applications are completed through WEB server (such as IIS, Nginx or Apache) and PHP engine program interpretation and execution. The working process:

(1) When the user enters the browser address Enter the file name of the PHP page to be accessed, then trigger a web request and transmit the request to the WEB server.

(2) The WEB server accepts this request and determines it to be a PHP request based on its suffix. The WEB server calls out the PHP application the user wants to access from the hard disk or memory and sends it to the PHP engine. program.

(3) The PHP engine program will scan the file sent from the WEB server from beginning to end, read it from the background according to the command, process the data, and dynamically generate the corresponding HTML page.

(4) The PHP engine will generate an HTML page and return it to the WEB server. The WEB server then returns the HTML page to the client browser.

2. PHP operating mode:

1) cgi Common Gateway Interface (Common Gateway Interface))

2) fast-cgi resident (long-live) type CGI

3) cli command line operation (Command Line Interface)

4) web module mode (module mode run by web servers such as apache)

Additional explanation :

1) Module mode:

Module mode is integrated in the form of mod_php5 module. At this time, the function of mod_php5 module is to receive PHP file requests passed by Apache, and process these requests, and then Return the processed results to Apache. If we configure the PHP module (mod_php5) in its configuration file before Apache starts, the PHP module registers the ap_hook_post_config hook of apache2 and starts this module when Apache starts to accept requests for PHP files.

In addition to this loading method at startup, Apache's modules can be dynamically loaded at runtime, which means that the server can be functionally expanded without recompiling the source code, or even needing to stop at all. server. All we need to do is to send the signal HUP or AP_SIG_GRACEFUL to the server to notify the server to reload the module. But before dynamic loading, we need to compile the module into a dynamic link library. Dynamic loading at this time is to load the dynamic link library. The processing of dynamic link libraries in Apache is completed through the module mod_so, so the mod_so module cannot be dynamically loaded, it can only be statically compiled into the core of Apache. This means it is started along with Apache.

2) PHP running mode in Nginx (Nginx+ PHP-FPM)

Please see the nginx + php principle section for details

Supplementary:

1. cgi, fast-cgi protocol

History of cgi

The full name of CGI is "Common Gateway Interface", the HTTP server communicates with your or other machines A tool for "talking" to programs on a network server, which must run on a network server. CGI can be written in any language as long as the language has standard input, output and environment variables. Such as php, perl, tcl, etc.

Early webservers only processed static files such as html, but with the development of technology, dynamic languages ​​​​such as php appeared. The webserver cannot handle it, what should I do? Then let the php interpreter handle it! But how does the php interpreter communicate with the webserver?

In order to solve the communication problem between different language interpreters (such as php, python interpreters) and webserver, the cgi protocol appeared. As long as you write a program according to the cgi protocol, you can achieve communication between the language interpreter and the webserver. Such as php-cgi program.

Improvements of fast-cgi

With the cgi protocol, the problem of communication between the php interpreter and the webserver is solved. The webserver can finally handle dynamic languages. However, every time the webserver receives a request, it will fork a cgi process, and then kill the process after the request is completed. If there are 10,000 requests, the php-cgi process needs to be forked and killed 10,000 times. Have you ever found it to be a waste of resources? As a result, an improved version of cgi, fast-cgi, appeared.

fast-cgi will not kill the process after each request is processed, but retain the process so that the process can handle multiple requests at one time. In this way, there is no need to re-fork a process every time, which greatly improves efficiency. FastCGI is a language-independent, scalable architecture CGI open extension. Its main behavior is to keep the CGI interpreter process in memory and thus obtain higher performance. As we all know, repeated loading of the CGI interpreter is the main reason for low CGI performance. If the CGI interpreter remains in memory and accepts FastCGI process manager scheduling, it can provide good performance, scalability, Fail-Over features, etc.

2. What is php-fpm

PHP-FPM is a PHP FastCGI manager, which is only used for PHP. PHP-FPM is actually a patch of the PHP source code, designed to integrate FastCGI process management into the PHP package. PHP-FPM provides a better PHP process management method, which can effectively control memory and processes, and smoothly reload PHP configuration.
The process includes two types of processes: master process and worker process.
There is only one master process, which is responsible for listening to the port and receiving requests from the Web Server. There are generally multiple worker processes (the specific number is configured according to actual needs). Each process has a PHP interpreter embedded inside it, which is PHP Where the code actually executes.

related suggestion:

Analysis of working principles of apache and php

The above is the detailed content of Detailed explanation of how php works. 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

Video Face Swap

Video Face Swap

Swap faces in any video effortlessly with our completely free AI face swap tool!

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

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

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,

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

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