PHP: Quels sont les avantages de FastCGI par rapport à mod_php?

30

Il m'a été récemment suggéré d'utiliser FastCGI avec PHP. Maintenant, je suis allé sur la page FastCGI et je l'ai lu mais je ne comprends pas vraiment quels sont les avantages.

cletus
la source

Réponses:

37

En utilisant mod_php, chaque travailleur Apache a l'intégralité de l'interpréteur PHP chargé. Comme Apache a besoin d'un processus de travail par demande entrante, vous pouvez rapidement vous retrouver avec des centaines de travailleurs Apache en cours d'utilisation, chacun avec son propre interpréteur PHP chargé, consommant d'énormes quantités de mémoire.

(Remarque, ce n'est pas tout à fait vrai, Apache worker_mpmvous permet de traiter de nombreuses demandes avec un seul travailleur Apache. Cependant, même en 2009, ce n'est pas la façon recommandée de déployer PHP en raison de problèmes de threads suspectés avec les extensions PHP.)

L'utilisation de PHP en mode fast_cgi (en utilisant quelque chose comme spawn-fcgi du package lighttpd) a les avantages suivants

  • régler le nombre de travailleurs PHP séparément du nombre de connexions entrantes
  • vous permet de mettre vos employés PHP sur un serveur différent, ou de faire évoluer de nombreux serveurs sans changer votre niveau Web
  • vous donne la possibilité de choisir un autre serveur Web, comme nginx ou lighttpd
  • vous permet d'exécuter votre application PHP dans un domaine de sécurité différent sur votre serveur Web
Dave Cheney
la source
5

FastCGI signifie que les bits php ne s'exécutent pas dans le même processus que les bits apache, contrairement à mod_php. Cette séparation peut avoir des avantages certains quand il s'agit de redémarrer le serveur ou de traiter des applications emballées - dans le cas mod_php cela signifie que c'est le processus apache qui est "emballé", mais sous fastcgi, c'est juste un processus auquel apache parle, donc l'ensemble du serveur ne doit pas être arrêté.

pjz
la source
4

Un autre avantage non encore mentionné est le fait qu'avec mod_fcgid(qui est une implémentation plus récente pour utiliser FastCGI sur Apache) et suexec vous pouvez réaliser des configurations où différents vhosts utilisent différents utilisateurs Linux pour l'exécution, ce qui peut être un réel avantage de sécurité dans un szenario d'hébergement partagé .

Avec mod_php, tous les vhosts partagent le même utilisateur, qui est l'utilisateur d'Apache. Cela peut entraîner des problèmes de sécurité.

Martin C.
la source
Cela dépend du MPM utilisé dans cette configuration Apache httpd particulière. Par exemple, avec MPM-itk ( mpm-itk.sesse.net ), il est possible d'utiliser mod_php et d'exécuter les scripts (ou mieux: les processus httpd) dans le contexte d'un autre utilisateur.
joschi