Maison  >  Article  >  développement back-end  >  Plusieurs modes de fonctionnement en PHP - CSDN Blog

Plusieurs modes de fonctionnement en PHP - CSDN Blog

不言
不言original
2018-04-08 13:47:114132parcourir

Nous savons que le programme Workerman doit s'exécuter en mode php-cli, qui est le mode ligne de commande. Nous devons comprendre cela.

On dit que PHP dispose actuellement de 4 modes de fonctionnement, à savoir le mode CGI, FastCGI, CLI et module Web.

CGI

Le nom complet est "Common Gateway Interface", qui permet à un client de demander des données d'un navigateur Web à un programme s'exécutant sur un serveur Web, comme décrit. Il s'agit d'un standard pour transmettre des données entre le client et ce programme. De plus, CGI est indépendant de tout langage, il peut donc être écrit dans n'importe quel langage, à condition que le langage ait des variables d'entrée, de sortie et d'environnement standard. Tels que php, perl, tcl, etc.

CGI doit ouvrir un sous-processus de maintenance distinct pour chaque demande d'utilisateur, de sorte que des problèmes de performances se produiront lorsque le nombre est grand, et il a été rarement utilisé ces dernières années.

FastCGI

Une version améliorée de CGI, FastCGI est comme un CGI de longue durée. Il peut être exécuté à tout moment. Tant qu'il est activé, cela ne coûtera pas à chaque fois. Il est temps d'analyser php.ini, de recharger toutes les extensions de DLL et de réinitialiser toutes les structures de données.

PHP utilise PHP-FPM (FastCGI Process Manager), dont le nom complet est PHP FastCGI Process Manager, pour la gestion.

Comment fonctionne FastCGI

  • Chargez le gestionnaire de processus FastCGI au démarrage du serveur Web

  • Le gestionnaire de processus FastCGI s'initialise, démarre plusieurs processus interpréteurs CGI et attend les connexions du serveur Web

     ;
  • Lorsqu'une requête client atteint le serveur Web, le gestionnaire de processus FastCGI sélectionne et se connecte à un interpréteur CGI. Le serveur Web envoie des variables d'environnement CGI et des entrées standard au sous-processus FastCGI php-cgi.

  • Une fois le sous-processus FastCGI terminé, il renvoie la sortie standard et les informations d'erreur au serveur Web à partir de la même connexion. Lorsque le processus enfant FastCGI ferme la connexion, la demande est traitée. Le processus enfant FastCGI attend et gère ensuite la prochaine connexion du gestionnaire de processus FastCGI.

  • En mode CGI normal, c'est la fin et vous devrez tout recommencer la prochaine fois. Mais dans FastCGI, tout cela ne se produit qu'une seule fois, lorsque le processus démarre. Un avantage supplémentaire est que les connexions persistantes aux bases de données fonctionnent.

Cli

PHP-CLI est l'abréviation de PHP Command Line Interface, qui est l'interface permettant à PHP de s'exécuter sur la ligne de commande, qui est différente de PHP environnement exécuté sur le serveur Web ( PHP-CGI, etc.).

Nous utilisons souvent "php -m" sous Linux pour savoir quelles extensions PHP a installées, qui est le mode d'exécution de la ligne de commande PHP. Vous pouvez taper php -h pour voir quelles sont les commandes spécifiques.

En mode php-cli nous pouvons directement démarrer un fichier php et l'exécuter, tout comme dans Workerman

php index.php start

Il est à noter que le mode php-cli n'a pas de php en cours d'exécution déclaration de délai d'attente.

Le chargement des modules

est généralement destiné à Apache. De cette façon, leur essence commune est d'utiliser LoadModule pour charger phpX_module, qui consiste à exécuter php en tant que sous-module d'Apache. Lors de l'accès à un fichier php via le Web, Apache appellera phpX_module pour analyser le code php. Alors, comment phpX_module transmet-il les données à l'analyseur php pour analyser le code php ? La réponse passe par sapi.

Ainsi, le processus ci-dessus pour qu'Apache appelle php est le suivant :

apache -> httpd -> php5_module -> sapi -> php

Chaque fois qu'Apache reçoit une requête, il générera un processus pour se connecter à php pour terminer la requête via sapi . Comme vous pouvez l'imaginer, s'il y a trop d'utilisateurs et trop d'utilisateurs simultanés, le serveur ne pourra pas le supporter.

De plus, lorsque mod_php est compilé dans Apache, il est difficile de déterminer s'il s'agit d'un problème avec PHP ou Apache lorsqu'un problème survient.

Résumé

Si vous souhaitez créer un serveur WEB PHP hautes performances, le meilleur moyen actuellement est Apache/Nginx + FastCGI + PHP-FPM (+PHP-CGI), ne le faites pas ne le faites plus Utilisez le chargement de module ou la méthode CGI

Recommandations associées :

Explication détaillée des quatre modes d'exécution de PHP

Cinq principaux PHP modes de fonctionnement

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:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn