FastCGI

Fastcgi ist ein Binärprotokoll für interaktive Programme mit a Webserver. Es ist eine Variation des früheren Gemeinsame Gateway -Schnittstelle (CGI). Das Hauptziel von FASTCGI ist es, den Overhead im Zusammenhang mit der Schnittstelle zwischen Webserver- und CGI -Programmen zu reduzieren, sodass ein Server mehr Webseitenanforderungen pro Zeiteinheit bearbeiten kann.

Geschichte

Gemeinsame Gateway -Schnittstelle (CGI) ist ein Protokoll zur Schnittstelle externer Anwendungen auf Webserver. CGI -Anwendungen werden in separat ausgeführt Prozesse, die zu Beginn jeder Anfrage erstellt und am Ende abgerissen werden. Dieses Modell "Ein neuer Prozess pro Anfrage" macht CGI -Programme sehr einfach zu implementieren, begrenzt jedoch die Effizienz und Skalierbarkeit. Bei hohen Lasten die Betriebssystem Der Aufwand für die Erstellung und Zerstörung der Prozesse wird erheblich. Außerdem begrenzt das CGI-Prozessmodell die Wiederverwendung von Ressourcenverwendung, z.

Um die Skalierbarkeitsmängel von CGI anzugehen, Offener Markt entwickelte Fastcgi und führte es Mitte der neunziger Jahre zuerst in sein Webserver-Produkt vor. Open Market wurde ursprünglich Fastcgi zum Teil als Wettbewerbsreaktion auf NetscapeEigentümer Anwendungsprogrammierschnittstellen (APIS) (Netscape Server Application Programming Interface (NSAPI)) Für die Entwicklung von Webanwendungen.

Fastcgi wurde zwar zuerst vom Open Market entwickelt, wurde dann von mehreren anderen Webserver -Herstellern implementiert. Sein Ansatz konkurrierte jedoch gegen andere Methoden, um die Server-Subprogramm-Kommunikation zu beschleunigen und zu vereinfachen. Apache HTTP Server Module wie mod_perl und mod_php erschien ungefähr zur gleichen Zeit und gewann schnell an Popularität. Ab 2020all diese verschiedenen Methoden, einschließlich CGI, werden gemeinsam verwendet.

Implementierungsdetails

Anstatt für jede Anfrage einen neuen Prozess zu erstellen, verwendet Fastcgi persistente Prozesse, um eine Reihe von Anforderungen zu bearbeiten. Diese Prozesse sind im Besitz des FastCGI -Servers, nicht dem Webserver.[1]

Um eine eingehende Anforderung zu bedienen, sendet der Webserver Umgebungsvariable Informationen und die Seitenanfrage an einen FastCGI -Prozess über beide a UNIX Domain Socket, a benannte Pfeife, oder ein Transmissionskontrollprotokoll (TCP) Verbindung. Die Antworten werden vom Prozess über dieselbe Verbindung zum Webserver zurückgegeben, und der Webserver liefert dann diese Antwort auf die Endbenutzer. Die Verbindung kann am Ende einer Antwort geschlossen werden, aber sowohl Webserver als auch FastCGI -Serviceprozesse bestehen bestehen.[2]

Jeder einzelne FastCGI-Prozess kann viele Anfragen über seine Lebensdauer abwickeln, wodurch der Overhead der Erstellung und Beendigung von Prozessprozessen pro Rangprozess vermieden wird. Die gleichzeitige Bearbeitung mehrerer Anfragen kann auf verschiedene Weise durchgeführt werden: Durch die Verwendung einer Verbindung mit interner Verbindung Multiplexing (d. H. Mehrere Anfragen über eine Verbindung); durch Verwendung mehrerer Verbindungen; oder durch eine Mischung dieser Methoden. Mehrere FastCGI -Server können konfiguriert werden, was die Stabilität und Skalierbarkeit erhöht.

Website -Administratoren und -Programmierer können feststellen, dass die Trennung von Webanwendungen vom Webserver in FastCGI viele Vorteile gegenüber eingebetteten Dolmetschern hat ((mod_perl, mod_php, etc.). Mit dieser Trennung können Server- und Anwendungsprozesse unabhängig voneinander neu gestartet werden - eine wichtige Überlegung für geschäftige Websites. Es ermöglicht auch die Implementierung von Sicherheitsrichtlinien für die Bewerbung und Hosting-Dienstleistungen, die eine wichtige Voraussetzung für ISPs und Webhosting-Unternehmen darstellen.[3] Verschiedene Arten von eingehenden Anforderungen können auf bestimmte FastCGI -Server verteilt werden, die für die effiziente Bearbeitung dieser Arten von Anforderungen ausgestattet sind.

Webserver, die FastCGI implementieren

Hinweis: Sofern nicht angegeben, ist die Vollständigkeit der FastCGI -Implementierung unbekannt

Sprachbindungen für seine API

Fastcgi kann in jeder Sprache implementiert werden, die unterstützt Netzwerkstücken. Da "Fastcgi ein Protokoll ist, keine Implementierung", ist es nicht fest an eine Sprache gebunden. Anwendungsprogrammierschnittstellen (Apis) existieren für:[18]

Jüngste Frameworks wie z. Rubin auf Schienen, Katalysator, Django, Kepler und Plack Verwenden Sie die Verwendung mit entweder mit den eingebetteten Dolmetschern (mod_ruby, mod_perl, mod_python oder mod_lua zum Beispiel) oder fastcgi.

Verweise

  1. ^ "Fastcgi -Spezifikation". Open Market, Inc.. 1996. archiviert von das Original am 19. Januar 2016.
  2. ^ "FastCGI: Eine Hochleistungs-Webserverschnittstelle". Open Market, Inc.. 1996. archiviert von das Original am 1. Oktober 2010.
  3. ^ Heinlein, Paul (1. November 1998). "FASTCGI: Persistente Anwendungen für Ihren Webserver". Linux Journal. Abgerufen 4. Oktober 2010.
  4. ^ FASTCGI APache Modul mod_fcgid
  5. ^ Debian Bug #450748: Bitte fügen Sie Unterstützung für TCP/IP -Fastcgi -Server hinzu
  6. ^ Probleme mit Apache 2.4 und PHP-FPM
  7. ^ libapache-mod-fastcgi auf GitHub
  8. ^ "Fastcgi - Der vergessene Schatz/ Abschnitt 2.3". Archiviert von das Original Am 2010-02-08. Abgerufen 2006-02-21.
  9. ^ Caddy -Benutzerhandbuch - Fastcgi
  10. ^ Fastcgi für Cherokee
  11. ^ Fastcgi Howto für Hiawatha
  12. ^ a b Fastcgi -Unterstützung im Stegy
  13. ^ Fastcgi für LightTPD
  14. ^ "Fastcgi -Erweiterung für IIS6.0 - RTM". Fastcgi für IIS. Microsoft. 2008-02-28. Abgerufen 2008-02-29.
  15. ^ "FASTCGI NGINX MODUL NGX_HTTP_FASTCGI_MODULE". nginx.org. Nginx, Inc. Abgerufen 20. Juni 2021.
  16. ^ OpenBSDs HTTPD (8) Erstes Commit
  17. ^ "Archivierte Kopie". Archiviert von das Original Am 2018-01-21. Abgerufen 2016-09-19.{{}}: CS1 Wartung: Archiviertes Kopie als Titel (Link)
  18. ^ Anwendungsbibliotheken, Entwicklungskits
  19. ^ Matreshka
  20. ^ Extpascal
  21. ^ Wie man Fastcgi von Common Lisp verwendet
  22. ^ Goanna Eiffel
  23. ^ Jastcgi, ein Java -Servlet, das das Fastcgi -Protokoll implementiert
  24. ^ Node-Spastcgi NPM-Paket
  25. ^ Es gibt mehrere Fastcgi -Module für Perl:Fcgi (Ein kompiliertes Modul in c),FCGI :: Async (für asynchrone Fastcgi -Anwendungen),Anyevent :: FCGI (zum Jedes Ereignis-basierte Anwendungen),Fcgi :: ev (zum Ev-basierte Anwendungen),CGI :: Schnell (Perl CGI-ähnliche Schnittstelle für Fastcgi),FCGI :: Client (eine Fastcgi -Client -Bibliothek) und NET :: FASTCGI (Konstanten und Funktionen zum Erstellen und Analysieren von Fastcgi -Nachrichten).
  26. ^ "PHP: FastCGI Process Manager (FPM) - Handbuch".
  27. ^ Fastercgi mit HHVM
  28. ^ Es gibt mehrere Rostkisten: Eine Implementierung von Hörern ist Fastcgi, und Fastcgise ist eine Client -Implementierung.
  29. ^ Real Studio Web Edition, baut Web -Apps, die über Fastcgi bezeichnet werden Archiviert 2011-02-08 bei der Wayback -Maschine

Externe Links