Cet article vous apporte une introduction aux principes des requêtes d'exécution nginx et php. Il a une certaine valeur de référence. Les amis dans le besoin peuvent s'y référer. J'espère qu'il vous sera utile.
Tout d'abord, comprenons la relation entre cgi, php-cgi, fastcgi et php-fpm que nous entendons souvent, et aidons-nous à comprendre le principe de fonctionnement de php
protocole cgi
Le protocole cgi est utilisé pour déterminer le serveur Web (tel que nginx), c'est-à-dire quelles données sont transmises par le serveur de distribution de contenu et quel format de données
Interpréteur de processus php-cgi
php-cgi est l'interpréteur de processus du protocole cgi de php à chaque démarrage, il doit charger le fichier php.ini -> -> traiter la requête -> renvoyer le contenu au serveur Web -> ;processus de sortie du processus php-cgi
protocole fastcgi
le protocole fastcgi est un complément à l'amélioration de l'efficacité du protocole cgi, principalement pour chaque requête. Il est nécessaire de démarrer l'optimisation d'un processus interpréteur cgi. Il n'est plus nécessaire que le processus interpréteur cgi recharge le fichier php.ini et initialise l'environnement d'exécution à chaque fois. chaque fois qu'il reçoit une requête du serveur Web
php-fpm est l'implémentation du protocole fastcgi et est un gestionnaire de processus. Il comprend les processus maître et de travail au démarrage. le processus écoute sur le port et reçoit les requêtes du serveur Web. Il existe généralement plusieurs processus de travail, chaque travailleur dispose d'un interpréteur de processus cgi, qui est utilisé pour exécuter le code PHP
Lors du démarrage de phpfpm, le processus maître sera démarré, le fichier php.ini sera chargé et l'environnement d'exécution sera initialisé et démarrera plusieurs processus de travail. Chaque fois qu'une demande arrive, elle sera transmise au processus de travail pour traitement
Chaque fois après avoir modifié la configuration php.ini et redémarré, un nouveau processus de travail sera a commencé à charger la nouvelle configuration, et le processus existant sera détruit une fois le travail terminé, afin d'obtenir un redémarrage en douceur
Si vous voulez comprendre le principe de coopération entre nginx et php, vous devez d'abord la comprendre. La signification globale de 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; #设置脚本文件请求的路径 } }
est que chaque fois que nginx écoute une requête URL sur le port 80, il effectuera 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
Le processus de demande d'utilisateur le plus simple est résumé ci-dessous :
L'utilisateur accède au nom de domaine ->Le nom de domaine effectue une résolution DNS->Requêtes à l'adresse IP correspondante serveur et port->nginx Écouter la requête du port correspondant ->nginx effectue une correspondance d'emplacement sur l'URL ->Exécuter les règles sous l'emplacement correspondant->nginx transmet la requête à php->php-fpm le processus maître surveille la requête nginx->processus maître Attribue la requête à l'un des processus de travail inactifs ->Le processus de travail exécute la requête->Le processus de travail renvoie le résultat de l'exécution à nginx->nginx renvoie le résultat à l'utilisateur
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!