Maison >développement back-end >tutoriel php >Comment nginx+php effectue-t-il les requêtes ? Introduction au principe de fonctionnement
Comment nginx+php effectue-t-il les requêtes ? L'article suivant vous présentera le principe de fonctionnement de la requête d'exécution nginx+php. Il a une certaine valeur de référence. Les amis dans le besoin peuvent s'y référer.
Comment fonctionne php
Tout d'abord, comprenons d'abord la relation entre cgi, php-cgi, fastcgi et php-fpm que nous on entend souvent parler de , pour aider à comprendre le fonctionnement de php
le protocole cgi
le protocole cgi est utilisé pour déterminer le serveur Web (tel que nginx) , qui est la livraison du serveur de distribution de contenu. Quelles données arrivent et quel format de données
interprète de processus php-cgi
php-cgi est l'interpréteur de processus du protocole cgi de php, chaque fois que vous le démarrez, vous devez suivre le processus de chargement du fichier php.ini -> initialisation de l'environnement d'exécution - > traitement de la requête - > >sortie du processus php-cgi
protocole fastcgi
Le protocole fastcgi est un complément à l'amélioration de l'efficacité du protocole cgi. principalement utilisé pour optimiser la nécessité de démarrer un processus d'interprétation cgi à chaque fois qu'une requête arrive. Ce n'est plus nécessaire. Le processus d'interprétation cgi doit recharger le fichier php.ini et initialiser l'environnement d'exécution à chaque fois qu'il reçoit une requête du serveur Web
gestionnaire de processus php-fpm
php-fpm est l'implémentation du protocole fastcgi et est un gestionnaire de processus. Il comprend les processus maîtres et de travail. démarrage. Le processus maître écoute sur le port et reçoit les requêtes du serveur Web. Il existe généralement plusieurs processus de travail, et chaque processus de travail Il existe un interpréteur de processus cgi pour exécuter le code PHP
php. démarrage et principe de fonctionnement
Lors du démarrage de phpfpm, le processus maître sera démarré. Chargez le fichier php.ini, initialisez l'environnement d'exécution et démarrez plusieurs processus de travail. Chaque fois qu'une demande arrive, elle sera transmise au processus de travail pour traitement
Principe de redémarrage en douceur de PHP
Chaque fois que le php.ini la configuration est modifiée Après le redémarrage, un nouveau processus de travail sera lancé pour charger la nouvelle configuration, et le processus existant sera détruit une fois le travail terminé, permettant ainsi un redémarrage en douceur
Comment nginx fonctionne
Si vous souhaitez comprendre le principe de coopération entre nginx et php, vous devez également d'abord comprendre la partie serveur dans le fichier de configuration nginx
server { listen 80; #监听80端口,接收http请求 server_name www.example.com; #一般存放网址,表示配置的哪个项目 root /home/wwwroot/zensmall/public/; # 存放代码的根目录地址或代码启动入口 index index.php index.html; #网站默认首页 #当请求网站的url进行location的前缀匹配且最长匹配字符串是该配置项时,按顺序检查文件是否存在,并返回第一个找到的文件 location / { #try_files,按顺序检查文件是否存在,返回第一个找到的文件 #$uri代表不带请求参数的当前地址 #$query_string代表请求携带的参数 try_files $uri $uri/ /index.php?$query_string; #按顺序检查$uri文件,$uri地址是否存在,如果存在,返回第一个找到的文件;如果都不存在,发起访问/index.php?$query_string的内部请求,该请求会重新匹配到下面的location请求 } #当请求网站的php文件的时候,反向代理到php-fpm去处理 location ~ \.php$ { include fastcgi_params; #引入fastcgi的配置文件 fastcgi_pass 127.0.0.1:9000; #设置php fastcgi进程监听的IP地址和端口 fastcgi_index index.php; #设置首页文件 fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; #设置脚本文件请求的路径 } }
La signification globale de la configuration du serveur ci-dessus est la suivante : chaque fois que nginx écoutera la requête URL sur le port 80, il effectuera une correspondance d'emplacement sur l'URL. Si la règle / correspond, la requête interne sera redirigée et la requête interne de /index.php?$query_string sera lancée, et la règle de configuration d'emplacement correspondante enverra la requête au processus maître d'écoute php-fpm sur le port 9000
Résumé
Le processus de demande d'utilisateur le plus simple est résumé ci-dessous :
L'utilisateur accède au nom de domaine->Domaine name effectue la résolution DNS-> ;Requête au serveur IP et au port correspondant->nginx écoute la requête du port correspondant->nginx effectue la correspondance d'emplacement sur l'URL->Exécute les règles sous l'emplacement correspondant-> nginx transmet la requête à php->php-fpm Le processus maître écoute la requête nginx->le processus maître attribue la requête à l'un des processus de travail inactifs->le processus de travail exécute la requête->le travailleur le processus renvoie le résultat de l'exécution à nginx->nginx renvoie le résultat à l'utilisateur
Ce qui précède est l'intégralité du contenu de cet article, j'espère qu'il sera utile à l'étude de chacun. Pour un contenu plus passionnant, vous pouvez prêter attention aux colonnes de didacticiels pertinentes du site Web PHP chinois ! ! !
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!