XaraX: FastCGI

Hallo

aus der ${php_sourcen_pfad}/sapi/cgi/README.FastCGI:

  1. Run PHP separately from the web server.

In this setup, PHP is started as a separate process entirely from the web server. It will listen on a socket for new FastCGI requests, and deliver PHP pages as appropriate. This is the recommended way of running PHP-FastCGI.
To run this way, you must start the PHP binary running by giving it an IP and a port number to listen to on the command line, e.g.:

./php -b 127.0.0.1:8002

The above line is the recommended way of running FastCGI.  You usually want the FastCGI server to provide services to the localhost, not everyone on the Internet.

If your web server sits on a remote host, you can make FastCGI listen on all interfaces:

./php -b :8002
   ./php -b "*:8002"

Note that hostnames are not supported.

You must also configure your web server to connect to the appropriate port in order to talk to the PHP FastCGI process.

Nun interessiert mich, wie das Protokoll zwischen dem so erstelltem Interpreter-Dämon PHP und einem Client auszusehen hat. Wenn könnte man fragen? Wo gibt es möglicherweise Links?

Gruß aus Berlin!
eddi

  1. Hallo!

    aus der ${php_sourcen_pfad}/sapi/cgi/README.FastCGI:

    In this setup, PHP is started as a separate process entirely from the web server. It will listen on a socket for new FastCGI requests, and deliver PHP pages as appropriate. This is the recommended way of running PHP-FastCGI.

    [...]

    You must also configure your web server to connect to the appropriate port in order to talk to the PHP FastCGI process.

    Nun interessiert mich, wie das Protokoll zwischen dem so erstelltem Interpreter-Dämon PHP und einem Client auszusehen hat.

    Ich weiß nicht ob Du das richtig verstanden hast. Das FastCGI-Protokoll wird nicht zwischen PHP-Binary und User-Agent (Browser) "gesprochen", sondern zwischen Webserver und PHP-Binary. Es laufen dann halt meist mehrere Dämon-Prozesse (PHP), die über TCP/IP mit dem Webserver kommunizieren (können dank TCP/IP auch auf mehreren anderen Servern liegen...). Browser und Webserver kommunizieren weiterhin ganz normal über HTTP. PHP-Scripte müssen auch nicht für FastCGI umgeschrieben werden, weil PHP sich darum kümmert, dass die Script wie bei CGI oder mod_php abgearbeitet werden.

    lighttpd z.B. verwendet PHP meist über FastCGI, ist sehr einfach zu konfigurieren und funktioniert wunderbar und sehr schnell. Hat halt den Vorteil dass man nicht wie bei CGI den PHP-Interpreter bei jedem Scriptaufruf neu laden muss, und auf der anderen Seite nur eine vom Webserver unabhängig festgelegte Anzahl Dämon-Prozesse hat, und nicht als Modul in jedem Webserver-Prozess.

    Kann das gerade in der Kombination mit lighttpd nur empfehlen!

    Wenn könnte man fragen?

    google? ;-)

    Wo gibt es möglicherweise Links?

    http://www.fastcgi.com/

    Vielleicht helfen auch noch folgende Links:
    http://lighttpd.net/documentation/fastcgi.html
    http://www.debianhowto.de/howto-archiv/de/apache2-phpfcgi-sarge/c_apache2-phpfcgi-sarge.html

    Grüße
    Andreas

    --
    SELFHTML Feature Artikel: http://aktuell.de.selfhtml.org/artikel/
    1. Hallo Andreas,

      aus der ${php_sourcen_pfad}/sapi/cgi/README.FastCGI:

      In this setup, PHP is started as a separate process entirely from the web server. It will listen on a socket for new FastCGI requests, and deliver PHP pages as appropriate. This is the recommended way of running PHP-FastCGI.

      [...]

      You must also configure your web server to connect to the appropriate port in order to talk to the PHP FastCGI process.

      Nun interessiert mich, wie das Protokoll zwischen dem so erstelltem Interpreter-Dämon PHP und einem Client auszusehen hat.

      Ich weiß nicht ob Du das richtig verstanden hast.

      Der Webserver ist gegeüber dem Interpreter-Dämon ein Client. Mein Verständnisproblem liegt weitern beim verwendeten Protokoll.

      ... FastCGI-Protokoll ... Es laufen dann halt meist mehrere Dämon-Prozesse (PHP), die über TCP/IP mit dem Webserver kommunizieren (können dank TCP/IP auch auf mehreren anderen Servern liegen...).

      Die "Spezifikation" schein mir eher eine gut kommentierte C-Quellcode-Diskussion zu sein. Leider reichen meine Kenntnisse noch nicht dafür aus. Aber ich habe mir die Sourcen angeschaut. Daher ist meine Frage wie nun diese Kommunikation _genau_ aussieht.

      Wenn könnte man fragen?
      google? ;-)

      Google hält dazu nichts weiterbringendes vorrätig.

      Wo gibt es möglicherweise Links?

      http://www.fastcgi.com/

      Vielleicht helfen auch noch folgende Links:
      http://lighttpd.net/documentation/fastcgi.html

      Hierbei wird leider nur auf das vordefinierte Objekt(?) fastcgi.server verweisen. Es wird erklärt, wie man diese Struktur mit den Parametern füttert, aber leider nichts vom eigentlichen Protokoll zu sehen.

      http://www.debianhowto.de/howto-archiv/de/apache2-phpfcgi-sarge/c_apache2-phpfcgi-sarge.html

      Durch diese Site bin ich erst darauf aufmerksam geworden, mal PHP nicht als Modul zu bauen.

      Gruß aus Berlin!
      eddi