开发者

Creation of new process for each request of web page?

It might be a basic question but everytime a user call a php file from a server, does it create a new process from that server ?

For example, I have a basic form (let's say on index.php) that submits a text to another php file. In that php file, I print the posix_getpid().

I opened in two tabs my index.php an filled in and submitted a text and I ended up with two different pid on each tab.

Which lead me to the conclusion that a server probably create a new process for each script. Am I right ?

开发者_如何学运维Cheers !


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.


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.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜