CGI und FastCGI visualisieren

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
Benutzeravatar
paedubucher
Beiträge: 857
Registriert: 22.02.2009 16:19:02
Lizenz eigener Beiträge: GNU Free Documentation License
Wohnort: Schweiz
Kontaktdaten:

CGI und FastCGI visualisieren

Beitrag von paedubucher » 15.11.2023 17:16:23

Ich möchte gerne den Unterschied zwischen CGI und FastCGI visualisieren. Die beiden Abläufe verstehe ich folgendemassen:

CGI:
  1. Der Client stellt einen Request an einen Web-Server.
  2. Der Web-Server nimmt den Request entgegen und merkt, dass eine Behandlung via CGI nötig ist.
  3. Das CGI-Modul des Webservers startet einen entsprechenen Interpreter (Perl, PHP, Python usw.).
  4. Der Webserver leitet den Request an den entsprechenden Interpreter weiter.
  5. Der Interpreter verarbeitet den Request und gibt eine Antwort zurück; der Prozess wird sogleich beendet.
  6. Der Webserver nimmt die Antwort entgegen und leitet sie an den Client weiter.
FastCGI:
  1. Der FastCGI-Prozess hält eine Reihe an Interpreter-Prozessen vor.
  2. Der Client stellt einen Request an einen Web-Server.
  3. Der Web-Server nimmt den Request entgegen und merkt, dass eine Behandlung via CGI nötig ist.
  4. Der Request wird an die FastCGI-Runtime weitergeleitet, welcher ihn durch einen Prozess im Pool behandeln lässt.
  5. Der jeweilige Prozess verarbeitet den Request, gibt die Antwort zurück und läut weiter.
  6. Der Webserver nimmt die Antwort entgegen und leitet sie an den Client weiter.
Habe ich das soweit richtig verstanden?

Angenommen, ich möchte das als Sequenzdiagramm modellieren: Welche Akteure soll ich da nehmen? Client, Web-Server, CGI-Modul bzw. FastCGI-Modul und Interpreter-Prozess(e)?

Ganz konkret soll es um Apache, PHP und PHP-FPM gehen.

EDIT I: Vielleicht wäre der Thread besser im Web- und Mailserver-Unterforum aufgehoben :?

EDIT II: Ich habe es mal mit UML-Sequenzdiagrammen versucht.

CGI:

4418

FastCGI:

4419

Die Lebensbalken sollen die Prozesslaufzeit veranschaulichen, nicht die Aktivität. (Mögen die UML-Götter mir gnädig sein.)
Habe nun, ach! Java
Python und C-Sharp,
Und leider auch Visual Basic!
Durchaus programmiert mit heissem Bemühn.
Da steh' ich nun, ich armer Tor!
Und bin so klug als wie zuvor.

Antworten