2011-01-13 6 views
2

Ich möchte FastCGI mit Shell-Skripten verwenden. Ich habe mehrere Tutorials über das Schreiben von CGI-Skripten in der Shell gefunden, aber nichts über FastCGI, und ich denke, das ist nicht das Gleiche.FastCGI Shell-Skript

Ist es möglich, und wie?

Danke

Edit: Ignacio: Vielen Dank, aber dieser Link ist 14 Jahre alt und sagt, dass dies nicht derzeit unterstützt wird. Wird es immer noch nicht unterstützt?

Antwort

4

Der ganze Sinn von FastCGI besteht darin, für jede eingehende Verbindung keinen neuen Prozess zu erzeugen. Aufgrund der Natur der Sprache wird ein Shell-Skript während seiner Ausführung viele Prozesse hervorbringen, es sei denn, Sie wollen sich stark einschränken. (Nr. cat, awk, sed, grep, usw., usw.). Wenn Sie also von Anfang an Shellscript verwenden, können Sie anstelle von FastCGI auch reguläres CGI verwenden.

Wenn Sie bestimmt sind, ist die erste große Hürde, dass Sie accept() Verbindungen auf einer hörenden Steckdose vom Webserver bereitgestellt werden. Soweit ich weiß, gibt es kein UNIX-Tool, das dies tut. Jetzt könnten Sie einen in einer anderen Sprache schreiben und Ihr Shellskript einmal für jede eingehende Verbindung ausführen. Aber das ist genau das, was normales CGI tut, und ich garantiere, dass es es besser macht als das benutzerdefinierte Programm, das Sie oder ich schreiben würden. Also, bleiben Sie bei normalem CGI, wenn Sie Shellscript verwenden möchten.

+0

Was ist mit netcat 'nc -k -l 0.0.0.0 10000> out.txt'? – ton

+0

Das ist netcat, das seinen eigenen Sockel öffnet, um zu hören. Wenn Netcat so etwas unterstützt, würde der Befehl mehr wie 'nc -k -l/dev/fd/3' aussehen, wobei der Datei-Deskriptor 3 vom Webserver an das Skript übergeben wurde. – Jander

1

No

ich im Voraus entschuldigen, wenn dies eine dumme Frage, aber es ist denkbar, einen bloßen Shell-Skript (sh oder ksh) als FastCGI-Programm zu verwenden, und wenn ja, wie?

Sie können ein einfaches Shell-Skript nicht als FastCGI-Programm verwenden. Da das Shell-Skript nicht über mehrere HTTP-Anforderungen hinweg bestehen kann, kann es nicht als als FastCGI-Anwendung verwendet werden. Damit das Programm mehrere HTTP Anfragen in seiner eigenen Lebenszeit (dh nicht nur Anfragen bearbeiten und sterben, wie CGI-Anwendungen), braucht es einige Mittel, um mit dem Webserver zu kommunizieren, um eine Anfrage zu empfangen, und senden Sie die Antwort zurück der Server nach der Handhabung es. Diese Kommunikation erfolgt über die FCGI-Bibliothek, die oben implementiert und es unterstützt derzeit nur eine Untergruppe von Programmiersprachen, wie C, Perl, Tcl, Java ... Kurz gesagt, es unterstützt keine Shell. Hoffe, dass es ein wenig geklärt hat. Stanley.

0

Von http://www.fastcgi.com/:

FastCGI einfach ist, weil es eigentlich CGI mit nur wenigen Erweiterungen ist.

auch:

wie CGI, FastCGI ist auch sprachunabhängig.

So können Sie FastCGI mit Shell-Skripten oder jeder anderen Art von Skripten verwenden, genau wie CGI.

Tutorials für CGI sind auch nützlich, um FastCGI zu lernen, außer vielleicht für die Besonderheiten der Einrichtung des Webservers.

+3

Und natürlich, der Teil, wo Sie für immer Schleife, Kommunikation mit dem Webserver, Umgang mit Signalen ... –

2

"Wenn Sie trotzdem bestimmt sind, ist die erste große Hürde, dass Sie Verbindungen() auf einem vom Webserver bereitgestellten Abhörsocket akzeptieren müssen. Soweit ich weiß, (...)" gibt es einen C Programm tut fast dies: exec_with_piped.c

(es ist mit Rohren, nicht Steckdosen, aber der C-Code leicht für Ihre Zwecke angepasst werden soll)

Blick auf „Schreiben Agenten in sh: durch ein Rohr im Gespräch“

http://okmij.org/ftp/Communications.html

Kalou