2011-03-02 42 views
7

这可能是一个基本的问题,但每次用户从服务器调用一个php文件,它是否会从该服务器创建一个新进程?为每个网页请求创建新的进程?

例如,我有一个基本的表单(让我们说index.php),提交一个文本到另一个php文件。 在那个php文件中,我打印了posix_getpid()

我在两个标签中打开我的index.php填写并提交了一个文本,我结束了与 两个不同的PID在每个选项卡上。

这导致我得出结论,服务器可能会为每个脚本创建一个新进程。 我对不对?

干杯!

回答

5

我假设你运行apache作为你的web服务器。

当请求进入时,apache启动一个新的线程。然后在这个新的therad上调用PHP,因此每次都得到一个新的进程ID。

这当然大大简化了。

我建议您阅读this文章以获得更深入的了解。

编辑:这个过程似乎不同平台之间。它的工作原理与我在Windows上描述的一样,但是在Unix上执行多个apache进程。

+2

好的,所以这是因为apache。但是你的解释对我来说有点奇怪,因为线程和进程是完全不同的。我的意思是,如果apache启动一个新线程,那意味着每个php脚本都应该有apache pid! – David 2011-03-02 18:26:15

+0

虽然我会阅读文章。 – David 2011-03-02 18:28:08

+0

不,PID来自新创建的PHP实例,而不是apache进程。 – alexn 2011-03-02 18:28:32

相关问题