FastCGI and PHP
Phillip B Oldham
phill at theactivitypeople.co.uk
Wed Apr 2 13:29:08 MSD 2008
Thanks Igor. That makes lots of sense. I appreciate your time.
I'll grab a copy of the fastcgi server code, read the spec, and start
playing around!
Igor Clark wrote:
> Hi Philip,
>
> I'm not sure about the way PHP-fcgi manages its processes internally,
> but there's some detail about the way the FastCGI communication
> happens in the FastCGI protocol spec at
> http://www.fastcgi.com/devkit/doc/fcgi-spec.html
>
> In short, the protocol works by exchanging FCGI "records" between the
> client and server which are basically chunks of information wrapped up
> in FCGI "messages". Each message header identifies itself including a
> request ID and a record type, allowing the client and server to
> establish input, output and error streams. The web server (FastCGI
> client) passes the normal CGI/1.1 environment variables (configured by
> nginx as fastcgi_params) to the FastCGI server's input stream, and the
> FastCGI server returns the request's output to the web server via its
> output stream. Any errors should be passed back via the error stream.
>
> There is scope in the protocol for multiplexing these connections,
> i.e. communicating multiple requests and responses across the same
> connection and identifying each by its request ID, but there seems to
> be no flow control built into the protocol, making this a somewhat
> dangerous proposition. As I understand it the protocol also allows for
> long-lived FastCGI connections which are re-used for multiple
> request/response cycles, but this isn't possible with nginx currently
> as it uses HTTP/1.0 to talk to upstream servers; additionally, the
> upstream server might be overwhelmed if nginx made hundreds of
> long-standing connections to it.
>
> There's further discussion of this and FastCGI in general at
> http://thread.gmane.org/gmane.comp.web.nginx.english/2974/focus=2974
>
> cheers,
> Igor
>
> On 2 Apr 2008, at 08:08, Phillip B Oldham wrote:
>
>> After the recent thread on php-fastcgi and memory leaks, I've
>> realised that I'm a little unsure as to exactly how nginx and
>> php-fastcgi communicate with one another. I'm wondering whether
>> anyone could spare the time for clarification?
>>
>> I understand that when started (in my case using spawn-fastcgi from
>> the lighttpd project) php-fastcgi creates a master process and a
>> number of child processes. Nginx then passes requests through to
>> php-fastcgi, which processes the request and returns a response.
>>
>> What I'm unsure on is whether nginx is passing the request directly
>> to one of the child processes or the master process which then
>> delegates.
>>
>> I'm also unsure as to how nginx passes through the fastcgi params we
>> configure.
>>
>> The reason I ask is that I have some useful components written in
>> Eiffel which I'd like to make available via a webserver. I've found a
>> small fastcgi server written in Eiffel, which I'd like to expand on
>> to replicate the kind of through-put the php-fastcgi instance I'm
>> running allows.
>>
>> Thanks.
>> --
>>
>> *Phillip B Oldham*
>> The Activity People
>> phill at theactivitypeople.co.uk <mailto:phill at theactivitypeople.co.uk>
>>
>> ------------------------------------------------------------------------
>>
>> *Policies*
>>
>> This e-mail and its attachments are intended for the above named
>> recipient(s) only and may be confidential. If they have come to you
>> in error, please reply to this e-mail and highlight the error. No
>> action should be taken regarding content, nor must you copy or show
>> them to anyone.
>>
>> This e-mail has been created in the knowledge that Internet e-mail is
>> not a 100% secure communications medium, and we have taken steps to
>> ensure that this e-mail and attachments are free from any virus. We
>> must advise that in keeping with good computing practice the
>> recipient should ensure they are completely virus free, and that you
>> understand and observe the lack of security when e-mailing us.
>>
>> ------------------------------------------------------------------------
>> <phill.vcf>
>
> --
> Igor Clark • POKE • www.pokelondon.com
>
>
>
>
>
--
*Phillip B Oldham*
The Activity People
phill at theactivitypeople.co.uk <mailto:phill at theactivitypeople.co.uk>
------------------------------------------------------------------------
*Policies*
This e-mail and its attachments are intended for the above named
recipient(s) only and may be confidential. If they have come to you in
error, please reply to this e-mail and highlight the error. No action
should be taken regarding content, nor must you copy or show them to anyone.
This e-mail has been created in the knowledge that Internet e-mail is
not a 100% secure communications medium, and we have taken steps to
ensure that this e-mail and attachments are free from any virus. We must
advise that in keeping with good computing practice the recipient should
ensure they are completely virus free, and that you understand and
observe the lack of security when e-mailing us.
------------------------------------------------------------------------
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://nginx.org/pipermail/nginx/attachments/20080402/127f5d40/attachment.html>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: phill.vcf
Type: text/x-vcard
Size: 261 bytes
Desc: not available
URL: <http://nginx.org/pipermail/nginx/attachments/20080402/127f5d40/attachment.vcf>
More information about the nginx
mailing list