FastCGI

FastCGI

FastCGI ist ein Standard für die Einbindung externer Software zur Generierung dynamischer Webseiten in einem Webserver. FastCGI ist vergleichbar zum Common Gateway Interface (CGI), wurde jedoch entwickelt, um dessen Performance-Probleme zu umgehen.

Unterschied zu CGI

Beim Aufruf einer auf CGI basierenden Webseite wird vom Webserver ein Prozess des CGI-Programms gestartet und am Ende des Requests wieder beendet. Weil CGI-Programme häufig in einer Skriptsprache wie Perl geschrieben sind, bedeutet das, dass pro Seitenaufruf der oft recht umfangreiche Interpreter geladen werden muss, was einen großen Overhead bedeutet (das Laden des Interpreters dauert bei einfachen CGI-Programmen länger als die eigentliche Programmausführung). Zudem braucht jeder Request einen eigenen Interpreter, d. h. bei mehreren parallelen Requests befinden sich entsprechend mehrere Kopien des Interpreters im Arbeitsspeicher des Servers. CGI hat zwar durch seine Einfachheit, Unabhängigkeit von der Programmiersprache und weitreichende Unterstützung durch praktisch alle Webserver eine sehr weite Verbreitung gefunden, jedoch führt der erwähnte Overhead zu einer hohen Latenzzeit und bei stark ausgelasteten Servern schnell zu einer Überlastung.

Im Unterschied dazu wird bei FastCGI das auszuführende Programm (inkl. Interpreter, falls nötig) nur einmal geladen und steht dann für mehrere Requests zur Verfügung – egal ob vom selben Client oder von unterschiedlichen Clients. Die Kommunikation mit dem Webserver erfolgt dabei nicht durch Umgebungsvariablen und Standardein-/ausgabe, sondern über Unix Domain Sockets oder TCP-Netzwerkverbindungen, d. h. das Programm kann sogar auf einem anderen Rechner laufen.

Programmiertechnisch lässt sich der Unterschied zu CGI-Programmen daran festmachen, dass ein FastCGI-Programm eine zentrale Schleife hat, die Requests entgegennimmt und durchaus solange laufen kann wie der Webserver:

use FCGI;
$var = 'foo';
while (FCGI::accept () >= 0) {
  ... http-Request bearbeiten ...
}

Während des Durchlaufens dieser Schleife bleiben Variablen im Speicher erhalten, was einerseits weitere Optimierungsmöglichkeiten gegenüber CGI- Programmen ermöglicht, andererseits eine sorgfältigere Programmierung erfordert, um Speicherlecks (memory leaks) zu vermeiden.

Funktionsweise

Die Kommunikation mit dem Webserver erfolgt paketorientiert und verbindungslos. Ein Datenpaket enthält im Header die FastCGI-Protokollversion, den Nachrichtentyp, eine Request-ID und die Länge der folgenden Daten. Der Nachrichtentyp entspricht dabei weitgehend den aus CGI bekannten Datenquellen – ein Paket kann u. a. die CGI-Umgebungsvariablen, den Inhalt der Standardeingabe (für POST) oder der Standardausgabe (für die Ausgabe an den Client) transportieren. Mehrere Clients können gleichzeitig bedient werden, da sie sich anhand der Request-ID unterscheiden lassen; darum ist im Unterschied zu CGI nur eine Programminstanz nötig, um viele Clients bedienen zu können.

Weblinks


Wikimedia Foundation.

Игры ⚽ Поможем написать реферат

Schlagen Sie auch in anderen Wörterbüchern nach:

  • FastCGI — is a protocol for interfacing interactive programs with a web server. FastCGI is a variation on the earlier Common Gateway Interface (CGI); FastCGI s main aim is to reduce the overhead associated with interfacing the web server and CGI programs,… …   Wikipedia

  • FastCGI — est une technique permettant la communication entre un serveur HTTP et un logiciel indépendant. Traditionnellement, les applications Web ont utilisé la Common Gateway Interface (CGI) qui exécute un nouveau processus à chaque requête. La… …   Wikipédia en Français

  • FastCGI — Saltar a navegación, búsqueda FastCGI es una alternativa al CGI estándar, cuya diferencia radica principalmente en el hecho de que el servidor crea un único proceso persistente por cada programa FastCGI en lugar de uno por cada solicitud del… …   Wikipedia Español

  • FastCGI — es una alternativa al CGI estándar, cuya diferencia radica principalmente en el hecho de que el servidor crea un único proceso persistente por cada programa FastCGI en lugar de por cada solicitud del cliente …   Enciclopedia Universal

  • FastCGI — Интерфейс FastCGI клиент серверный протокол взаимодействия веб сервера и приложения, дальнейшее развитие технологии CGI. По сравнению с CGI является более производительным и безопасным. FastCGI снимает множество ограничений CGI программ.… …   Википедия

  • FastCGI — s. FCGI …   Acronyms

  • FastCGI — s. FCGI …   Acronyms von A bis Z

  • Comparison of server-side JavaScript solutions — This is a list of Server side JavaScript solutions. Contents 1 Server side JavaScript use 2 See also 3 External links 4 References …   Wikipedia

  • CGI-Script — Das Common Gateway Interface (CGI) – in etwa Allgemeine Vermittlungsrechner Schnittstelle – ist ein Standard für den Datenaustausch zwischen einem Webserver und dritter Software, die Anfragen bearbeitet. CGI ist eine schon länger bestehende… …   Deutsch Wikipedia

  • Common Gateway Interface — This article is about the interface between a web server and an external application. For the term CGI in computer graphics, see Computer generated imagery. The Common Gateway Interface (CGI) is a standard (see RFC 3875: CGI Version 1.1) method… …   Wikipedia

Share the article and excerpts

Direct link
Do a right-click on the link above
and select “Copy Link”