Creation of new process for each request of web page?
There are multiple ways to chain the web server with PHP.
For Apache HTTP Server
, the most popular is "mod_php". This module is actually PHP itself, but compiled as a module for the web server, and so it gets loaded right inside it. Since with mod_php, PHP gets loaded right into Apache, if Apache is going to handle concurrency using its Worker MPM (that is, using Threads)
And here is a trap for things like setlocale()
.
With Nginx
you won't have the option to embed PHP into it. Hence, PHP is totally outside of the web server with multiple PHP processes
.
And it is good, because PHP can do things on lower lever, like changing locales
And setlocale()
is NOT thread-safe.
I assume that you're running apache as your web server.
When a request comes in, apache starts a new thread. PHP is then invoked on this new thread, hence why you get a new process id every time.
This is, of course, greatly simplified.
I recommend reading this article for a deeper understanding.
Edit: It seems that the process differs between platforms. It works the way I described above on Windows, but multiple apache processes are executed on Unix.