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 ? Introduction au principe de fonctionnement

青灯夜游
青灯夜游avant
2019-02-26 10:36:512528parcourir

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!

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