<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="de">
	<id>https://wiki-de.moshellshocker.dns64.de/index.php?action=history&amp;feed=atom&amp;title=FastCGI</id>
	<title>FastCGI - Versionsgeschichte</title>
	<link rel="self" type="application/atom+xml" href="https://wiki-de.moshellshocker.dns64.de/index.php?action=history&amp;feed=atom&amp;title=FastCGI"/>
	<link rel="alternate" type="text/html" href="https://wiki-de.moshellshocker.dns64.de/index.php?title=FastCGI&amp;action=history"/>
	<updated>2026-05-22T01:11:11Z</updated>
	<subtitle>Versionsgeschichte dieser Seite in Wikipedia (Deutsch) – Lokale Kopie</subtitle>
	<generator>MediaWiki 1.43.8</generator>
	<entry>
		<id>https://wiki-de.moshellshocker.dns64.de/index.php?title=FastCGI&amp;diff=164817&amp;oldid=prev</id>
		<title>imported&gt;Hutch: Abschnittlink korrigiert</title>
		<link rel="alternate" type="text/html" href="https://wiki-de.moshellshocker.dns64.de/index.php?title=FastCGI&amp;diff=164817&amp;oldid=prev"/>
		<updated>2026-03-17T07:33:24Z</updated>

		<summary type="html">&lt;p&gt;Abschnittlink korrigiert&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Neue Seite&lt;/b&gt;&lt;/p&gt;&lt;div&gt;&amp;#039;&amp;#039;&amp;#039;FastCGI&amp;#039;&amp;#039;&amp;#039; ist ein binäres [[Netzwerkprotokoll]] für die Anbindung eines [[Anwendungsserver]]s an einen [[Webserver]]. FastCGI ist vergleichbar mit dem [[Common Gateway Interface]]&amp;amp;nbsp;(CGI), wurde jedoch entwickelt, um dessen [[Rechenleistung|Performance]]-Probleme zu umgehen.&lt;br /&gt;
&lt;br /&gt;
== Unterschied zum CGI ==&lt;br /&gt;
Beim Aufruf einer auf CGI basierenden [[Webseite]] wird vom Webserver ein [[Prozess (Informatik)|Prozess]] des CGI-Programms gestartet und am Ende des [[Client-Server-Modell#Definitionen|Requests]] wieder beendet. Weil CGI-Programme häufig in einer [[Skriptsprache]] wie [[Perl (Programmiersprache)|Perl]] geschrieben sind, bedeutet das, dass pro [[Seitenabruf]] der oft recht umfangreiche [[Interpreter]] geladen werden muss, was einen großen [[Overhead (EDV)|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, das heißt, bei mehreren parallelen Requests befinden sich entsprechend mehrere Kopien des Interpreters im [[Arbeitsspeicher]] des Servers.&lt;br /&gt;
&lt;br /&gt;
CGI ist zwar durch seine Einfachheit, Unabhängigkeit von der Programmiersprache und weitreichende Unterstützung durch praktisch alle Webserver sehr weit verbreitet, jedoch führt der erwähnte Overhead zu einer hohen [[Verzögerung (Telekommunikation)|Latenzzeit]] und bei stark ausgelasteten Servern schnell zu einer Überlastung.&lt;br /&gt;
&lt;br /&gt;
Im Unterschied dazu wird bei FastCGI das auszuführende Programm (inklusive 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 [[Umgebungsvariable]]n und [[Standard-Datenströme|Standardein-/-ausgabe]], sondern über [[Unix Domain Socket]]s oder [[Transmission Control Protocol|TCP]]-[[Netzwerkverbindung]]en, das heißt, das Programm kann sogar auf einem anderen Rechner laufen.&lt;br /&gt;
&lt;br /&gt;
Programmiertechnisch lässt sich der Unterschied zu CGI-Programmen daran festmachen, dass ein FastCGI-Programm eine zentrale [[Schleife (Programmierung)|Schleife]] hat, die Requests entgegennimmt und durchaus so lange laufen kann wie der Webserver:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;perl&amp;quot;&amp;gt;&lt;br /&gt;
 use FCGI;&lt;br /&gt;
 $var = &amp;#039;foo&amp;#039;;&lt;br /&gt;
 while (FCGI::accept () &amp;gt;= 0) {&lt;br /&gt;
   ... http-Request bearbeiten ...&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Während des Durchlaufens dieser Schleife bleiben Variablen im [[Arbeitsspeicher|Speicher]] erhalten, was einerseits weitere Optimierungsmöglichkeiten gegenüber CGI-Programmen ermöglicht, andererseits eine sorgfältigere Programmierung erfordert, um [[Speicherleck]]s (&amp;#039;&amp;#039;memory leaks&amp;#039;&amp;#039;) zu vermeiden.&lt;br /&gt;
&lt;br /&gt;
== Funktionsweise ==&lt;br /&gt;
Die Kommunikation mit dem Webserver erfolgt paketorientiert und [[Nachrichtenverbindung|verbindungs]]&amp;lt;nowiki /&amp;gt;los.&lt;br /&gt;
&lt;br /&gt;
Ein [[Datenpaket]] enthält im [[Header]]:&lt;br /&gt;
* die FastCGI-Protokollversion&lt;br /&gt;
* den Nachrichtentyp; entspricht weitgehend den aus CGI bekannten Datenquellen – ein Paket kann unter anderem transportieren:&lt;br /&gt;
** die CGI-[[Umgebungsvariable]]n&lt;br /&gt;
** den Inhalt der [[Standard-Datenströme|Standardeingabe]] (für [[Hypertext Transfer Protocol#HTTP-POST|POST]]) oder&lt;br /&gt;
** den Inhalt der Standardausgabe (für die Ausgabe an den [[Client]])&lt;br /&gt;
* eine Request-ID und&lt;br /&gt;
* die Länge der folgenden Daten.&lt;br /&gt;
&lt;br /&gt;
Mehrere Clients können gleichzeitig bedient werden, da sie sich anhand der Request-ID unterscheiden lassen; darum ist im Unterschied zu CGI nur eine [[Prozess (Informatik)|Programminstanz]] nötig, um viele Clients zu bedienen.&lt;br /&gt;
&lt;br /&gt;
== Weblinks ==&lt;br /&gt;
* [https://fastcgi-archives.github.io/FastCGI_Specification.html FastCGI-Spezifikation] (englisch)&lt;br /&gt;
&lt;br /&gt;
{{Navigationsleiste Webserver-Schnittstellen}}&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Webserver (Thema)]]&lt;br /&gt;
[[Kategorie:Netzwerkprotokoll auf Anwendungsschicht]]&lt;/div&gt;</summary>
		<author><name>imported&gt;Hutch</name></author>
	</entry>
</feed>