Maison  >  Article  >  développement back-end  >  Introduction au principe d'exécution des requêtes nginx et php

Introduction au principe d'exécution des requêtes nginx et php

不言
不言avant
2019-02-25 09:53:212264parcourir

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

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

Démarrage PHP et principe de fonctionnement

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

Principe de redémarrage en douceur de PHP

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

Comment fonctionne nginx

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

Résumé

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!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer