Skip to main content

Fast CGI

Was ist Fast CGI?

Bei Fast CGI handelt es sich um ein binäres Netzwerkprotokoll mit welchem Anwendungsserver an einen Webserver angebunden werden. Fast CGI funktioniert ähnlich wie das klassische Common Gateway Interface (CGI). Ziel der Entwicklung von Fast CGI war es, die Performanceprobleme von CGI zu umgehen.

Wie funktioniert Fast CGI?

Bei Fast CGI erfolgt die Kommunikation mit dem Webserver verbindungslos sowie paketorientiert. In jedem Datenpaket ist im Header neben der Protokollversion auch den Nachrichtentyp, die Request ID sowie die Länge der nachfolgenden Daten. Der Nachrichtentyp ist dabei größtenteils mit dem aus CGI bekannten Datenquellen identisch.

Pro Datenpaket können unter anderem die CGI Umgebungsvariablen, die Standardausgabe für die Ausgabe an den Client und den Inhalt der Standardausgabe für Post transportiert werden. Anhand der Request ID lassen sich mehrere Clients unterscheiden und können somit gleichzeitig bedient werden. Im Gegensatz zum klassischen CGI lassen sich mehrere Clients mit nur einer Programminstanz bedienen.

Unterschiede von Fast CGI zu CGI

Wird eine auf CGI basierende Webseite aufgerufen, startet der Webserver den Prozess des CGI Programms und schließt diesen am Ende des Request wieder. Da die Programme sehr häufig in einer Skriptsprache wie PHP oder Perl geschrieben sind, muss bei jedem Aufruf ein zumeist recht umfangreicher Interpreter geladen werden. Beim klassischen CGI dauert dieser Aufruf oftmals länger als die eigentliche Ausführung des Programms. Die Folge ist ein großer Overhead.

Ein weiteres Problem von Fast CGI ist der Umstand, dass für jeden Request ein separater Interpreter benötigt wird. Kommt es gleichzeitig zu mehreren Requests befinden sich im Arbeitsspeicher des Webservers mehrere Kopien. Bei stark ausgelasteten Servern kann es somit schnell zu einer Überlastung kommen.

Bei Fast CGI muss das ausführende Programm inklusive Interpreter nur einmal geladen werden. Anschließend steht es für mehrere Requests zur Verfügung. Dabei spielt es keine Rolle ob diese vom selben oder verschiedenen Clients stammen. Ein weiterer Unterschied ist, dass die Kommunikation mit dem Webserver nicht über Umgebungsvariablen sowie Standardeingaben und Ausgaben läuft. Stattdessen werden Unix Domain Sockets oder TCP Netzwerkverbindungen genutzt. Das Programm kann sogar auf einem anderen Rechner laufen.

Programmiertechnisch liegt der Unterschied zu normalen CGI Programmen in erster Linie darin, dass die Requests bei Fast CGI durch eine zentrale Schleife entgegengenommen werden. Diese können solange wie der Webserver laufen wobei die Variablen beim Durchlaufen einer Schleife erhalten bleiben. Dadurch lässt sich Fast CGI besser optimieren erfordert jedoch im Gegenzug eine genauere Programmierung. Ansonsten kann es zu Speicherlecks kommen.

Fast CGI und HTML

In den HTML Code von Webseiten lassen sich sowohl HTML Tags wie auch CGI Aufrufe integrieren. Die integrierten Anwendungen können dabei verschiedene Funktionen umfassen. Zudem kann das CGI Script auch einen automatischen Verweis ausführen, für die keinerlei Benutzerinteraktionen erforderlich sind. Auf diese Weise lassen sich beispielsweise Datums- und Zeitverläufe aufrufen. Hierzu wird das Fast CGI Skript Anker in den HTML Code eingebunden. Um den aktuellen Seitenaufrufinkrement zu speichern wird eine separate Textdatei angelegt. Die Seitenzahl wird über einen Server Include gespeichert. Dieser entspricht dabei einer HTML-Datei mit einem oder mehreren Skriptbefehlen.

Fast CGI Nachteile und SQL

Bei Structered QueryLanguage (SQL) handelt es sich um die Beschreibungssprache für relationale Datenbanken. Mittels PHP ist ein deutlich schnellerer SQL Datentransfer möglich.

CGI ist der Vorgänger von dynamischen Webseiten. Das Protokoll wurde ursprünglich zur Datenübertragung im Internet entwickelt. Ein großer Nachteil sind dabei die möglichen Performanceprobleme. Werden Informationen in ein Webformular eingetragen, erfolgt zunächst die Bearbeitung des CGI Ordners des lokalen Webservers. Erst anschließend werden die encodierten Daten an einen entfernten Webserver gesendet. Die gespeicherten Daten können von authentifizierten Clients per Webserver aufgerufen, visualisiert sowie editiert werden. Die Übermittlung mit PHP ist weniger fehleranfällig und schneller.

Sie haben noch Fragen?

Kontaktieren Sie uns