Frage PHP: Was sind die Vorteile von FastCGI gegenüber mod_php?


Es wurde mir kürzlich vorgeschlagen, dass ich FastCGI mit PHP verwende. Jetzt ging ich zur FastCGI-Seite und las sie, aber ich verstehe nicht wirklich, was die Vorteile sind.


30
2018-05-10 02:35


Ursprung




Antworten:


Mit Hilfe von mod_php wird für jeden Apache-Worker der gesamte PHP-Interpreter geladen. Da Apache pro eingehender Anfrage einen Arbeitsprozess benötigt, können Sie schnell Hunderte von Apache-Workern verwenden, von denen jeder einen eigenen PHP-Interpreter geladen hat, der sehr viel Arbeitsspeicher belegt.

(Anmerkung, das ist nicht genau richtig, Apache's worker_mpm ermöglicht es Ihnen, viele Anfragen mit einem Apache-Mitarbeiter mit nur einem Thread zu bedienen. Dies ist jedoch auch 2009 nicht der empfohlene Weg, um PHP wegen vermuteter Threading-Probleme mit den PHP-Erweiterungen bereitzustellen.)

Durch die Verwendung von PHP im fast_cgi-Modus (mit etwas wie Spawn-Fcgi aus dem lighttpd-Paket) hat die folgenden Vorteile

  • Stellen Sie die Anzahl der PHP-Mitarbeiter getrennt von der Anzahl der eingehenden Verbindungen ein
  • ermöglichen es Ihnen, PHP-Worker auf einem anderen Server zu platzieren oder auf mehreren Servern zu skalieren, ohne Ihre Webebene zu ändern
  • gibt Ihnen die Flexibilität, einen anderen Webserver zu wählen nginx, oder Lichttpd
  • ermöglicht es Ihnen, Ihre PHP-Anwendung in einer anderen Sicherheitsdomäne auf Ihrem Webserver auszuführen

37
2018-05-10 03:14





FastCGI bedeutet, dass die PHP-Bits nicht im selben Prozess wie die Apache-Bits laufen, im Gegensatz zu mod_php. Diese Trennung kann einige definitive Vorteile haben, wenn es um den Neustart des Servers oder den Umgang mit runaway-Anwendungen geht - im Fall mod_php bedeutet das, dass der Apache-Prozess "runaway" ist, aber unter fastcgi ist es nur ein Prozess, mit dem Apache spricht Der gesamte Server muss nicht heruntergefahren werden.


5
2018-05-10 02:50





Ein weiterer noch nicht erwähnter Vorteil ist die Tatsache, dass mit mod_fcgid (das ist eine neuere Implementierung für die Verwendung von FastCGI auf Apache) und suexec können Sie Setups realisieren, bei denen verschiedene vhosts unterschiedliche Linux-Benutzer zur Ausführung verwenden, was ein echter Sicherheitsvorteil in einem Shared-Hosting-Szenario sein kann.

Mit mod_php teilen sich alle vhosts denselben Benutzer, der der Benutzer von Apache ist. Dies kann zu Sicherheitsproblemen führen.


4
2018-05-10 07:43



Es hängt von dem MPM ab, das in diesem speziellen Apache httpd Setup verwendet wird. Zum Beispiel mit MPM-itk (mpm-itk.sesse.net) Es ist möglich, mod_php zu verwenden und die Skripte (oder besser: die httpd-Prozesse) im Kontext eines anderen Benutzers laufen zu lassen. - joschi