Maison  >  Article  >  développement back-end  >  Il existe plusieurs modes de démarrage en php

Il existe plusieurs modes de démarrage en php

王林
王林original
2019-09-16 11:58:593552parcourir

Il existe plusieurs modes de démarrage en php

Plusieurs modes de démarrage courants de PHP :

1. Mode CGI

CGI est l'interface de passerelle commune. (Common Gateway Interface), c'est un programme. En termes simples, CGI est comme un pont qui relie les pages Web et le programme d'exécution du serveur Web, puis il transmet les instructions reçues par HTML au programme d'exécution du serveur. exécute le serveur. Les résultats du programme sont renvoyés à la page HTML. CGI est extrêmement multiplateforme et peut être implémenté sur presque tous les systèmes d'exploitation. CGI est déjà un modèle plus ancien et a rarement été utilisé ces dernières années.

Chaque fois qu'il y a une demande d'utilisateur, un sous-processus CGI sera créé en premier, puis la demande sera traitée et le sous-processus sera terminé après le traitement. Il s'agit du Fork-And-Execute. mode. Lorsque le nombre de requêtes utilisateur est très important, une grande quantité de ressources système telles que la mémoire, le temps CPU, etc. sera occupée, ce qui entraînera de faibles performances. Par conséquent, un serveur utilisant CGI aura autant de sous-processus CGI qu'il y a de demandes de connexion. Le chargement répété de sous-processus est la principale raison des faibles performances CGI.

Si vous ne souhaitez pas intégrer PHP dans un logiciel côté serveur (comme Apache) et l'installer en tant que module, vous pouvez choisir de l'installer en mode CGI. Ou utilisez PHP avec différents wrappers CGI pour créer des environnements chroot et setuid sécurisés pour votre code. De cette façon, chaque client demande un fichier PHP, et le serveur Web appelle php.exe (php.exe sous win, php sous Linux) pour interpréter le fichier, puis renvoie le résultat de l'interprétation au client sous la forme de une page Internet. Cette méthode d'installation installe généralement le fichier exécutable PHP dans le répertoire cgi-bin du serveur Web. La recommandation CERT CA-96.11 recommande de ne placer aucun interpréteur dans le répertoire cgi-bin.

L'avantage de cette méthode est qu'elle sépare le serveur Web du traitement spécifique du programme, qu'elle a une structure claire et une forte contrôlabilité. En même temps, l'inconvénient est que s'il y a une forte demande d'accès, le processus CGI. Fork va Cela devient un énorme fardeau pour le serveur. Imaginez simplement que des centaines de requêtes simultanées amènent le serveur à bifurquer des centaines de processus. C'est pourquoi CGI a toujours été connu pour ses faibles performances et sa consommation élevée de ressources.

2. Mode FastCGI

FastCGI est une version améliorée de FastCGI qui est comme un CGI de longue durée, qui peut être exécuté à tout moment. s'il est activé, il ne faudra pas de temps pour Fork à chaque fois (c'est le mode fork-and-execute le plus critiqué de CGI).

FastCGI est une interface évolutive et haut débit pour la communication entre les serveurs HTTP et les langages de script dynamiques. Les serveurs HTTP les plus populaires prennent en charge FastCGI, notamment Apache, Nginx et lighttpd. Dans le même temps, FastCGI est également pris en charge par de nombreux langages de script, notamment PHP.

Le mode d'interface FastCGI adopte la structure C/S, qui peut séparer le serveur HTTP et le serveur d'analyse de script, et démarrer un ou plusieurs démons d'analyse de script sur le serveur d'analyse de script. Chaque fois que le serveur HTTP rencontre un programme dynamique, celui-ci peut être transmis directement au processus FastCGI pour exécution, puis le résultat est renvoyé au navigateur. Cette méthode permet au serveur HTTP de traiter exclusivement les requêtes statiques ou de renvoyer les résultats du serveur de script dynamique au client, ce qui améliore considérablement les performances de l'ensemble du système d'application.

3. Mode CLI

PHP-CLI est l'abréviation de PHP Command Line Interface, comme son nom l'indique, c'est l'interface sur laquelle PHP peut s'exécuter. la ligne de commande. Différent de l'environnement PHP (PHP-CGI, ISAPI, etc.) exécuté sur le serveur Web. En d’autres termes, PHP peut non seulement écrire des pages Web frontales, mais il peut également être utilisé pour écrire des programmes back-end. PHP CLI Shell Scripting s'applique à tous les avantages de PHP, permettant la création de scripts ou de systèmes côté serveur ou même avec des applications GUI. Le mode PHP-CLI est pris en charge sous Windows et Linux.

[Avantages]

1) Utilisez plusieurs processus une fois le processus enfant terminé, le noyau sera responsable du recyclage des ressources

2) Utiliser plusieurs processus, La sortie anormale du processus enfant ne provoquera pas la fermeture de l'ensemble du processus Thread, et le processus parent aura toujours la possibilité de reconstruire le processus

3) Un processus principal résident est seul responsable ; pour la répartition des tâches, et la logique est plus claire.

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 ; les étudiants intéressés peuvent saisir "php -h" pour étudier ce mode d'exécution en profondeur ; .

4. Mode module

Le mode module est intégré sous la forme du module mod_php5 À l'heure actuelle, la fonction du module mod_php5 est de recevoir le fichier PHP. requêtes transmises par Apache, traite ces requêtes, puis renvoie les résultats traités à Apache. Si nous configurons le module PHP (mod_php5) dans son fichier de configuration avant le démarrage d'Apache, le module PHP enregistre le hook ap_hook_post_config d'apache2 et démarre ce module lorsque Apache commence à accepter les requêtes de fichiers PHP.

En plus de cette méthode de chargement au démarrage, les modules Apache peuvent être chargés dynamiquement au moment de l'exécution, ce qui signifie que le serveur peut être étendu sans avoir besoin de recompiler le code source, voire sans arrêter du tout le serveur. Il suffit d'envoyer le signal HUP ou AP_SIG_GRACEFUL au serveur pour notifier au serveur de recharger le module. Mais avant le chargement dynamique, nous devons compiler le module dans une bibliothèque de liens dynamiques. Le chargement dynamique à ce moment consiste à charger la bibliothèque de liens dynamiques. Le traitement des bibliothèques de liens dynamiques dans Apache est effectué via le module mod_so, donc le module mod_so ne peut pas être chargé dynamiquement, il ne peut être compilé que statiquement dans le noyau d'Apache. Cela signifie qu'il est démarré avec Apache.

Comment Apache charge-t-il les modules ? Prenons comme exemple le module mod_php5 mentionné précédemment. Nous devons d'abord ajouter une ligne au fichier de configuration d'Apache httpd.conf :

LoadModule php5_module modules/mod_php5.so

Nous utilisons ici la commande LoadModule. Le premier paramètre de la commande est le nom du module. Le nom se trouve dans le source. code de l'implémentation du module. La deuxième option est le chemin où se trouve le module. Si vous devez charger un module pendant que le serveur est en cours d'exécution, vous pouvez envoyer le signal HUP ou AP_SIG_GRACEFUL au serveur. Une fois le signal reçu, Apache rechargera le module sans redémarrer le serveur.

Ce mode de fonctionnement est ce que nous utilisons souvent lors de l'utilisation du serveur Apache dans l'environnement Windows. Dans la modularisation (DLL), PHP est démarré et exécuté avec le serveur Web. (C'est une extension d'Apache basée sur CGI pour accélérer l'efficacité opérationnelle de PHP).

5. Le mode ISAPI

ISAPI (Internet Server Application Program Interface) est un ensemble d'interfaces API pour les services Internet fournis par Microsoft, une DLL ISAPI, il peut résider en mémoire après avoir été activé par une demande de l'utilisateur et attendre une autre demande de l'utilisateur. Vous pouvez également définir plusieurs fonctions de traitement des demandes de l'utilisateur dans une seule DLL. De plus, l'application DLL ISAPI et le serveur WWW sont dans le même processus. , ce qui améliore l'efficacité de manière significative par rapport à CGI. (En raison de l'exclusivité de Microsoft, il ne peut fonctionner que dans l'environnement Windows)

En tant que module Apache, le serveur Apache pré-génère plusieurs copies de processus et réside dans la mémoire après le démarrage du système. il sera immédiatement utilisé pour le traitement. Utilisez ces sous-processus de rechange, afin qu'il n'y ait pas de retard causé par la génération de sous-processus. Ces copies du serveur ne se ferment pas immédiatement après le traitement d'une requête HTTP, mais restent sur l'ordinateur en attendant la requête suivante. La réponse aux requêtes du navigateur client est plus rapide et les performances sont plus élevées.

Tutoriel recommandé : Tutoriel vidéo PHP

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