For requests handled via CGI you generally have to start a whole new
instance of the CGI engine to deal with a request. CGI is just a common
gateway interface between the web server and some engine behind the web
server that knows what to do with the request that is being sent to it.

With an Apache module like mod_php the processing is happening inside the
web server and hence inside the job that answered the request. That is why
you can directly affect how much of your box gets eaten or how responsive it
is to web requests by your StartServers and MaxClients directives.

I don't have an all encompassing knowledge of Zend Core or Apache but I'd
like to think that I'm not coming across as just making rhetorical points
derived from hypothetical situations.

Regards,
Alfred

On Tue, Mar 17, 2009 at 15:12, Nathan Andelin <nandelin@xxxxxxxxx> wrote:


From: Alfredo Delgado
An early strength of PHP over other web scripting platforms was that
it runs as an Apache module instead of a separate CGI process ...

Could you elaborate on that? My understanding was that each PHP instance
ran as a separate process - not as an HTTP server thread. Otherwise, why
would the MaxClients directive apply to PHP? But I admit that I don't know
whether that process is launched from mod_cgi, or mod_php. Does it matter?


By running PHP as a module, the extra steps of sending the request
off to an outside binary are removed and every Apache job basically
speaks PHP instead of just simply serving traffic.

Again, it would be helpful if you could elaborate.

Running as a separate process "may have" the advantage of separating an
application server from a communication server, so that itinerant
applications don't affect client-server communications - static content and
so forth. That's not always the case. There have been cases where a bug in
a CGI program has seized every thread in the HTTP server. I'm not sure what
happens to PHP or the Apache server when they run buggy scripts.

Now why wouldn't everybody skip the proxy step?

Some folks use a proxy server anyway so that you have one server for static
content, but another for dynamic content. The front-end server might be
configured to run 1000 threads, while the back-end is configured to run 100.

But it's true that you're adding some latency due to inter-process
communication.






--
This is the Web Enabling the AS400 / iSeries (WEB400) mailing list
To post a message email: WEB400@xxxxxxxxxxxx
To subscribe, unsubscribe, or change list options,
visit: http://lists.midrange.com/mailman/listinfo/web400
or email: WEB400-request@xxxxxxxxxxxx
Before posting, please take a moment to review the archives
at http://archive.midrange.com/web400.





As an Amazon Associate we earn from qualifying purchases.

This thread ...

Follow-Ups:
Replies:

Follow On AppleNews
Return to Archive home page | Return to MIDRANGE.COM home page

This mailing list archive is Copyright 1997-2024 by midrange.com and David Gibbs as a compilation work. Use of the archive is restricted to research of a business or technical nature. Any other uses are prohibited. Full details are available on our policy page. If you have questions about this, please contact [javascript protected email address].

Operating expenses for this site are earned using the Amazon Associate program and Google Adsense.