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.

Tags:

Php

Process

Pid