Maison > Article > développement back-end > Explication détaillée de 4 méthodes d'exécution courantes de PHP
Cet article présente principalement les 4 méthodes d'exploitation courantes de php, CGI, FastCGI, APACHE2HANDLER et CLI, qui ont une certaine valeur de référence. Les amis intéressés peuvent se référer à
Les 4 types de php Méthodes d'exploitation couramment utilisées : CGI, FastCGI, APACHE2HANDLER, CLI.
1. CGI
CGI est l'interface de passerelle commune (common gateway interface). C'est un programme en termes simples, CGI est comme un pont. . Il connecte la page Web au programme d'exécution du serveur WEB. Il transmet les instructions reçues par HTML au programme d'exécution du serveur, puis renvoie les résultats du programme d'exécution du serveur à la page HTML. CGI est extrêmement multiplateforme et peut être implémenté sur presque tous les systèmes d'exploitation.
Lorsque la méthode CGI rencontre une demande de connexion (demande de l'utilisateur), elle doit d'abord créer un sous-processus cgi, activer un processus CGI, puis traiter la demande et terminer le sous-processus après traitement. Il s’agit du modèle fork-and-execute. 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. 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.
2. FastCGI
fast-cgi est une version améliorée de cgi est comme un CGI de longue durée. Il peut être exécuté tout le temps. du temps Tant qu'il est activé, il ne faudra pas de temps pour bifurquer à chaque fois. PHP utilise PHP-FPM (FastCGI Process Manager), le nom complet de PHP FastCGI Process Manager, pour la gestion.
Chargez le gestionnaire de processus FastCGI (IIS ISAPI ou Apache Module) au démarrage du serveur Web. Le gestionnaire de processus FastCGI s'initialise, démarre plusieurs processus interpréteurs CGI (visibles plusieurs php-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 (exécuté sur le serveur Web). En mode CGI, php-cgi se termine à ce stade.
Dans le cas ci-dessus, vous pouvez imaginer à quel point CGI est généralement lent. Chaque requête Web adressée à PHP doit réanalyser php.ini, recharger toutes les extensions et réinitialiser toutes les structures de données. Avec FastCGI, tout cela ne se produit qu’une seule fois, au démarrage du processus. Un avantage supplémentaire est que les connexions persistantes aux bases de données fonctionnent.
3. APACHE2HANDLER
PHP est un module Apache Après le démarrage du système, le serveur Apache pré-génére plusieurs copies de processus pour résider dans la mémoire. sera utilisé immédiatement. Ces sous-processus inactifs sont traités afin qu'il n'y ait aucun retard causé par la génération des 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.
4. CLI
cli est le mode d'exécution en ligne de commande de php. Les commandes exécutées côté cli sont parfois très utiles. résumé :
Afficher les informations sur la version php
eric:~ youngeric$ php -v PHP 5.5.38 (cli) (built: Oct 1 2016 23:03:00) Copyright (c) 1997-2015 The PHP Group Zend Engine v2.5.0, Copyright (c) 1998-2015 Zend Technologies
Afficher l'extension de la version actuelle de PHP
eric:~ youngeric$ php -m [PHP Modules] bcmath bz2 calendar Core ctype curl date ......
Afficher les informations de configuration de php.ini (équivalent à l'utilisation la fonction phpinfo())
eric:~ youngeric$ php -ini phpinfo() PHP Version => 5.5.38 System => Darwin eric.local 16.1.0 Darwin Kernel Version 16.1.0: Wed Oct 19 20:31:56 PDT 2016; root:xnu-3789.21.4~4/RELEASE_X86_64 x86_64 Build Date => Oct 1 2016 23:01:51 Configure Command => './configure' '--prefix=/usr/local/Cellar/php55/5.5.38_11' '--localstatedir=/usr/local/var' '--sysconfdir=/usr/local/etc/php/5.5' '--with-config-file-path=/usr/local/etc/php/5.5' '--with-config-file-scan-dir=/usr/local/etc/php/5.5/conf.d' '--mandir=/usr/local/Cellar/php55/5.5.38_11/share/man' '--enable-bcmath' '--enable-calendar' '--enable-dba' '--enable-exif' '--enable-ftp' '--enable-gd-native-ttf' '--enable-mbregex' '--enable-mbstring' '--enable-shmop' '--enable-soap' '--enable-sockets' '--enable-sysvmsg' '--enable-sysvsem' '--enable-sysvshm' '--enable-wddx' '--enable-zip' '--with-freetype-dir=/usr/local/opt/freetype' '--with-gd' '--with-gettext=/usr/local/opt/gettext' '--with-iconv-dir=/usr' '--with-icu-dir=/usr/local/opt/icu4c' '--with-jpeg-dir=/usr/local/opt/jpeg' '--with-kerberos=/usr' '--with-libedit' '--with-mhash' '--with-ndbm=/usr' '--with-png-dir=/usr/local/opt/libpng' '--with-xmlrpc' '--with-zlib=/usr' '--with-readline=/usr/local/opt/readline' '--without-gmp' '--without-snmp' '--with-libxml-dir=/usr/local/opt/libxml2' '--with-pdo-odbc=unixODBC,/usr/local/opt/unixodbc' '--with-unixODBC=/usr/local/opt/unixodbc' '--with-bz2=/usr' '--with-openssl=/usr/local/opt/openssl' '--enable-fpm' '--with-fpm-user=_www' '--with-fpm-group=_www' '--with-curl' '--with-xsl=/usr' '--with-ldap' '--with-ldap-sasl=/usr' '--with-mysql-sock=/tmp/mysql.sock' '--with-mysqli=mysqlnd' '--with-mysql=mysqlnd' '--with-pdo-mysql=mysqlnd' '--disable-opcache' '--enable-pcntl' '--without-pear' '--enable-dtrace' '--disable-phpdbg' '--enable-zend-signals' Server API => Command Line Interface Virtual Directory Support => disabled Configuration File (php.ini) Path => /usr/local/etc/php/5.5 Loaded Configuration File => /usr/local/etc/php/5.5/php.ini Scan this dir for additional .ini files => /usr/local/etc/php/5.5/conf.d ......
Afficher les informations sur la fonction
eric:~ youngeric$ php --rf date Function [ <internal:date> function date ] { - Parameters [2] { Parameter #0 [ <required> $format ] Parameter #1 [ <optional> $timestamp ] } }
Afficher les informations sur le cours
eric:~ youngeric$ php --rc pdo Class [ <internal:PDO> class PDO ] { - Constants [89] { Constant [ integer PARAM_BOOL ] { 5 } Constant [ integer PARAM_NULL ] { 0 } Constant [ integer PARAM_INT ] { 1 } Constant [ integer PARAM_STR ] { 2 } Constant [ integer PARAM_LOB ] { 3 } Constant [ integer PARAM_STMT ] { 4 } Constant [ integer PARAM_INPUT_OUTPUT ] { 2147483648 } ......
Détecter le code PHP
eric:~ youngeric$ php -l jiance.php PHP Parse error: syntax error, unexpected end of file, expecting ',' or ';' in jiance.php on line 3 Errors parsing jiance.php
En tant que meilleur langage au monde, PHP a même une fonction de serveur intégrée (avez-vous l'air choqué) ?
eric:Desktop youngeric$ php -S 127.0.0.1:8080 PHP 5.5.38 Development Server started at Thu Dec 22 09:44:20 2016 Listening on http://127.0.0.1:8080 Document root is /Users/youngeric/Desktop Press Ctrl-C to quit. [Thu Dec 22 09:44:29 2016] 127.0.0.1:52988 [404]: / - No such file or directory [Thu Dec 22 09:44:29 2016] 127.0.0.1:52989 [404]: /favicon.ico - No such file or directory
Ce qui précède représente l'intégralité du contenu de cet article, j'espère qu'il sera utile à l'étude de chacun.
Recommandations associées :
PHPCopie, suppression de dossiers, affichage de la taille, etc. en fonction de l'itération
PHPQuels sont les moyens d'implémenter un algorithme de tri de tableaux multidimensionnels
PHP Implémentation récursive Copier, supprimer, afficher la taille, etc. des dossiers
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!