[Technik] PHP als FastCGI

Christof Donat cdonat at gmx.de
Fri Jul 28 11:54:18 CEST 2006


Hi,

> kennt jemand Funktionsunterschiede zwischen FastCGI <-> mod_php und
> FastCGI <-> CGI?
> Oder URL, oder ...

CGI:
Bei jedem Aufruf wird ein externes Programm aufgerufen (das CGI-Skript). 
Natürlich muss dafür ein eigener Prozess erzeugt werden, das Programm in den 
Speicher geladen und initialisiert werden. Dann fängt das Programm erst mal 
an, sich zurechtzufinden, Libraries nachzuladen, etc. CGI ist sehr flexibel, 
wird von fast jedem HTTP-Server unterstützt. Dafür ist es eben sehr langsam.

FastCGI:
Ein Versuch, die Schwächen von CGI zu umgehen. FastCGI-Skripte können wie 
normale CGI-Skripte funktionieren, dann gibt es aber auch keinen Vorteil. 
Alternativ können sie nach der ersten Anfrage in eine Endlosschleife 
eintreten und Anfragen entgegennehmen. Solche Programme müssen nur einmal 
geladen und initialisiert werden, können ihre Libraries, etc. im Speicher 
halten und können z.B. zwischenergebnisse Cachen und beim nächsten mal darauf 
zurückgreifen. Mit solchen Programmen ist FastCGI sehr viel 
ressourcenschonender als CGI. Andererseits wird FastCGI nicht von so vielen 
Servern unterstützt.

mod_php:
Allgemeiner Apache-Module. Apache Module sind Libraries, die dem Apache 
zusätzliche Funktionalität zur Verfügung stellen. Die Funktionalität (die 
Library) wird schon beim Start von Apache geladen und initialisiert. Es muss 
kein zusätzlicher Prozess erzeugt werden, weil die Module innerhalb des 
jeweiligen Apache-Prozesses laufen. Die Module können auch direkt aufgerufen 
werden und es ist keine inter-Prozess-Kommunikation nötig. Apache-Module 
laufen noch deutlich ressourcenschonender als FastCGI, dafür aber eben nur in 
Apache - und selbst da sind die Module nicht alls zwischen den Versionen 1 
und 2 austauschbar.

Hoffe ausreichend zur entgültigen Verwirrung beigetragen zu haben :-)

Christof


More information about the Technik mailing list