La colonne suivante du tutoriel d'utilisation de Workerman vous présentera plusieurs modes de fonctionnement en PHP. J'espère qu'elle sera utile aux amis dans le besoin !
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 module CGI, FastCGI, CLI et Web.
CGI
Le nom complet est "Common Gateway Interface", qui permet à un client de passer d'un navigateur Web à un programme exécuté sur un serveur Web. demande des données, qui décrit une norme de transmission de données entre le client et le 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
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é. ne le fera pas. Il faudra du temps pour analyser php.ini, recharger toutes les extensions de DLL et réinitialiser toutes les structures de données à chaque fois.
PHP utilise PHP-FPM (FastCGI Process Manager), dont le nom complet est PHP FastCGI Process Manager, pour la gestion.
Comment fonctionne FastCGI
Le gestionnaire de processus FastCGI est chargé au démarrage du serveur Web
Le gestionnaire de processus FastCGI s'initialise et démarre plusieurs interprétations CGI ; processus serveur et attend une connexion du serveur Web ;
Lorsqu'une requête client arrive sur 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 commandes spécifiques sont disponibles.
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 convient de noter qu'en mode php-cli, il n'y a pas de délai d'attente d'exécution de php. .
Le chargement du module
est généralement pour Apache. De cette façon, leur essence commune est d'utiliser LoadModule pour charger phpX_module, ce qui consiste à utiliser php comme Apache Un sous-module pour. courir. 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 As. vous pouvez imaginer que s'il y a trop d'utilisateurs et trop d'utilisateurs simultanés, le serveur ne pourra plus 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, la meilleure méthode actuellement est Apache/Nginx + FastCGI + PHP-FPM(+PHP- CGI), n'utilisez plus le chargement de module ou la méthode CGI
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!