首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >是否为每个网页请求创建新的进程?

是否为每个网页请求创建新的进程?
EN

Stack Overflow用户
提问于 2011-03-03 02:17:37
回答 2查看 8.5K关注 0票数 12

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

例如,我有一个基本的表单(比方说在index.php上),它将一个文本提交给另一个php文件。在php文件中,我打印了posix_getpid().

我在两个选项卡中打开了我的index.php,并填写并提交了一个文本,结果每个选项卡上都有两个不同的pid。

这使我得出结论,服务器可能会为每个脚本创建一个新进程。我说的对吗?

干杯!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-03-03 02:19:38

我假设您正在运行apache作为您的web服务器。

当请求传入时,apache会启动一个新线程。然后在这个新线程上调用PHP,这就是为什么每次都会获得一个新的进程id。

当然,这大大简化了。

我推荐阅读this的文章来加深理解。

编辑:似乎不同平台的流程有所不同。它在Windows上的工作方式与我上面描述的一样,但在Unix上执行多个apache进程。

票数 7
EN

Stack Overflow用户

发布于 2019-06-20 06:58:27

有多种方法可以用PHP链接web服务器。

对于Apache HTTP Server来说,最流行的是"mod_php“。这个模块实际上是PHP本身,但被编译为web服务器的一个模块,因此它直接加载到其中。因为在mod_php中,如果Apache打算使用它的Worker MPM (也就是,使用线程)来处理并发,那么PHP就会被直接加载到Apache中。

这里有一个像setlocale()这样的陷阱。

使用Nginx时,您将无法选择将PHP嵌入其中。因此,PHP是完全在具有多个PHP processes的web服务器之外的。

而且它很好,因为PHP可以在较低的级别上做一些事情,比如更改localessetlocale()不是线程安全的。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5171639

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档