web-dev-qa-db-fra.com

Différences et inconvénients entre: Fastcgi, CGI, Mod_php, PHP, PHP-FPM

Il existe peu de "wrappers" php différents (?). Quelles sont les différences entre eux? J'ai essayé de google, mais je ne peux pas trouver d'informations. (mod-php n'est pas googleable).

Pourquoi devrais-je choisir l'un plutôt que l'autre?

82
Gacek

Les questions sont un peu étranges, ce n'est pas clair si vous ne demandez que PHP ou votre question est plus générale.

Je vais vous donner un bref aperçu du côté PHP.

Tout d'abord, les deux protocoles:

  • Les scripts CGI sont un moyen d'exécuter un script côté serveur lorsqu'une requête HTTP arrive; cela n'a rien à voir avec PHP

  • FastCGI est un "meilleur CGI" - CGI est connu pour être lent, Fast CGI est une approche différente avec des résultats beaucoup plus rapides; cela n'a également rien à voir avec PHP.

Maintenant, les choses liées PHP:

  • mod_php exécute un PHP comme module Apache - c'est-à-dire PHP est exécutée sous le processus Apache avec tout ce qui va avec - Les processus Apache sont définis par la configuration Apache, PHP est exécuté avec l'autorisation Apache, etc.

  • PHP-FPM est l'implémentation FastCGI de PHP; PHP-FPM fonctionne comme un serveur FastCGI autonome et Apache se connecte au serveur à l'aide du module d'Apache, généralement mod_fcgid ou mod_fastcgi; Personnellement, je pense que c'est beaucoup mieux que d'exécuter en tant que mod_php, mais cela dépend de vos besoins et est également un peu plus complexe; dans cette configuration, les autorisations, les processus liés et tout est exécuté sous PHP, PHP utilisateur, etc. & Apache se connecte à PHP quant à un serveur; dans cette configuration, il est également possible d'avoir un pool de serveurs PHP et d'avoir PHP serveur sur une machine physiquement différente d'Apache) Ils disent que c'est presque aussi rapide que d'utiliser le module d'Apache et qu'il y a des avantages à mieux contrôler la configuration PHP.

  • SuPHP - il a été principalement utilisé pour résoudre certains problèmes de mod_php liés aux autorisations; avec mod_php PHP sont exécutés sous l'utilisateur/groupe Apache; mod_suphp peut exécuter les scripts dans différents utilisateurs; je ne l'ai jamais utilisé, PHP-FPM devrait maintenant être un bien meilleur choix

Donc en gros:

  • CGI, Fast-CGI sont des protocoles; CGI est lent, Fast-CGI est beaucoup plus rapide
  • mod_php (avec soulignement) et PHP-FPM sont deux méthodes de base pour exécuter PHP
  • mod_SuPHP est similaire à mod_php mais peut changer l'utilisateur/groupe sous lequel le processus s'exécute
154
Aleš Krajník