2009-07-15 5 views
2

Dies ist mehr zu verstehen, die Anfrage-Antwort-Mechanismus in Web-Anwendungen. Ein Client sendet eine Anfrage (GET/POST) an eine Web-App. Die Web-App verfügt über einen Anwendungsserver, der als Container für die anwendungsspezifischen Programme dient. Ich verstehe den Teil nicht, wenn der App-Server einen FastCGI/CGI-Prozess startet. Welche Bedeutung hat CGI? Sind die Server nicht dafür ausgelegt, den gesamten Mechanismus zur Bearbeitung von Anfragen zu verwalten? Welcher Teil der Anfrageverarbeitung hängt von CGI ab?Verständnis von CGI/FastCGI in Rails

Antwort

1

ich ein ähnliches gefragt (obwohl es für die Umsetzung mehr in der Nähe ist dann Konzepte) hier Frage: HTTP request dispatch from Web Server to a CGI/FastCGI process

aber hier ist es, was ich in der Lage gewesen, auf dem Weg zu lernen: CGI ist ein Satz von „Standards "Diese definieren, wie ein HTTP/Web Server mit externen Programmen kommunizieren soll. Beachten Sie das Wort Standards! Obwohl es kein aus-und out-Protokoll (wie HTTP, TCP usw.) ist, aber es ist ziemlich nahe zu sein, wie die meisten externen Programme, die HTML (Ruby, PHP, Python usw.) erzeugen, die Reihe von Standards erfüllen.

Sie können hier mehr über CGI lesen: http://hoohoo.ncsa.illinois.edu/cgi/intro.html

und hier: http://www.w3.org/CGI/

FastCGI ist eine Verbesserung auf dem Weg CGI-Prozesse abgewickelt werden - stellen in einem super einfache Art und Weise ein FastCGI-Prozess bleibt loaded in den Speicher für eine längere Zeit, so dass es mehrere Anforderungen verarbeiten kann, während es in den Speicher geladen wird. Offensichtlich funktioniert, dass effizienten, da die Zeit & Ressourcen verloren beim Laden der grundlegende CGI-Umgebung nie, dass häufig in FastCGI passiert die verarbeitet

Ein wenig abseits der Strecke und Rails spezifischer, aber das ist eine interessante artice: http://izumi.plan99.net/blog/index.php/2007/04/05/saving-memory-in-ruby-on-rails/

0

Die Kommunikation zwischen dem Client (typischerweise einem Browser) und dem Webserver erfolgt über http. Wenn der Webserver eine Anfrage empfängt, analysiert er, wonach die Anfrage fragt, und gibt die entsprechende Ausgabe zurück. Die Anfrage kann zu einer Datei auf der Festplatte gespeichert werden, dann gibt der Server nur den Inhalt der Datei zurück. Wenn die Anfrage ein Programm (Ihre CGI) identifiziert, wird es ausgeführt und die Ausgabe Ihres Programms an den Client zurückgeben.

+0

Danke Dani. Lassen Sie mich hier etwas genauer sein. Angenommen, ich verwende eine Rails-App. Der Client fordert eine Ressource an, die ein bestimmter Teil meines Programms ist (typischerweise eine Nachricht an ein Controller-Objekt). Wo passt CGI hier rein? Sollte der App-Server (wie zum Beispiel Mongrel) nicht in der Lage sein, das Programm auszuführen und die Antwort an den Client zurückzugeben? –

+0

Wenn Sie Mongrel verwenden, verwenden Sie kein CGI. – Quentin

+1

Genau !. CGI ist ein Begriff, der sich auf die Ausführung einer "Konsolenanwendung" durch den Webserver bezieht. CGI ist die Kommunikation zwischen dem Web Server und einer Konsolenanwendung. Mit mongreal wird Ihre Anwendung "innerhalb" des Webservers ausgeführt. –