Maison  >  Questions et réponses  >  le corps du texte

nginx - J'ai une question sur le processus d'exécution de PHP-CGI. Veuillez la résoudre.

J'ai quelques doutes sur l'utilisation de php-cgi, aidez-moi s'il vous plaît.

Le scénario hypothétique est le suivant :
nginx surveille 192.168.1.101:80, il n'y a pas d'environnement php
index.php 192.168.1.101 ::/dev/shm/index.php
php-fpm écoutant 192.168.1.102:90000

La confusion est que pendant le processus en cours, index.php est analysé et exécuté sur 192.168.1.101, ou est-il envoyé à 192.168.1.102 pour être analysé et exécuté ? Un expert peut-il expliquer le processus détaillé ?

Si vous analysez et exécutez la version 1.102, une fois que vous rencontrez un package de code relativement volumineux tel que phar ou un seul gros fichier php, l'ensemble du package est-il envoyé ensemble ? Le trafic intranet n’a-t-il pas l’air impressionnant ?

曾经蜡笔没有小新曾经蜡笔没有小新2713 Il y a quelques jours729

répondre à tous(3)je répondrai

  • 仅有的幸福

    仅有的幸福2017-05-16 17:25:26

    Nginx qui surveille 192.168.1.101:80 distribue les requêtes PHP à 192.168.1.102:9000 que PHP-FPM surveille via fastcgi_pass. PHP-FPM analyse le paramètre $_SERVER['SCRIPT_FILENAME'] transmis par Nginx selon la requête PHP Nginx. , l'interpréteur PHP à l'intérieur du processus de travail PHP-FPM exécute le script et renvoie le résultat à Nginx via le LAN.

    La communication réseau TCP est utilisée entre les processus Nginx et PHP-FPM, tandis que MOD_PHP, qui intègre l'interpréteur PHP en tant que module dans le processus Apache (thread), est complètement différent Grâce à l'amont de Nginx, il est facile d'implémenter le clustering PHP -FPM. et une haute disponibilité.

    Aussi :
    Apache peut être utilisé avec PHP-FPM via le module mod_fastcgi. Dans ce cas, il est recommandé qu'Apache utilise event MPM, un MPM epoll multi-processus et multithread qui utilise le non-thread par défaut. version sécurisée, plus efficace et plus stable.
    Apache peut être utilisé avec PHP-CGI via le module mod_fcgid. Il est recommandé d'utiliser la même méthode que ci-dessus.
    Notez que le module mod_fastcgi d'Apache est similaire au support fastcgi fourni par Nginx. Sa fonction est différente de mod_fcgid et plus efficace que mod_fcgid, car mod_fcgid doit gérer le processus PHP-CGI par lui-même, tandis que sous mod_fastcgi, le processus principal PHP-FPM. gère son propre travail FPM.

    répondre
    0
  • 天蓬老师

    天蓬老师2017-05-16 17:25:26

    Merci à @白一子 et @eechen pour leurs réponses. En fait, lorsque je pose cette question, je veux savoir si un script php doit être installé sur la machine 192.168.1.102. Parce que j'utilisais principalement Apache auparavant et rarement php-fpm~

    Je viens de trouver deux serveurs pour configurer l'environnement, et je le comprends probablement.

    En fait, php-fpm ne reçoit que l'en-tête de nginx, qui est fastcgi_param, puis trouve SCRIPT_FILENAME, charge le script depuis le disque dur de 1.102 et l'exécute, ce qui est le processus de transmission entre nginx et php-fpm. C'est juste l'en-tête et n'a rien à voir avec le script, puis exécutez le code php via l'en-tête comme Apache~

    .

    En d'autres termes, quels que soient les autres fonctions avancées et principes de fonctionnement internes d'Apache, les processus en cours d'exécution de nginx + php-fpm et nginx + apache sont fondamentalement les mêmes~~

    répondre
    0
  • 仅有的幸福

    仅有的幸福2017-05-16 17:25:26

    Ceci, j'ai déjà donné la réponse dans la question /q/1010000002753412. L'organigramme est donné dans ma réponse, il devrait être facile à comprendre

    .

    répondre
    0
  • Annulerrépondre