这可能是一个基本的问题,但每次用户从服务器调用php文件时,是否会从该服务器创建一个新进程?
例如,我有一个基本的表单(比方说在index.php上),它将一个文本提交给另一个php文件。在php文件中,我打印了posix_getpid().
我在两个选项卡中打开了我的index.php,并填写并提交了一个文本,结果每个选项卡上都有两个不同的pid。
这使我得出结论,服务器可能会为每个脚本创建一个新进程。我说的对吗?
干杯!
发布于 2011-03-03 02:19:38
我假设您正在运行apache作为您的web服务器。
当请求传入时,apache会启动一个新线程。然后在这个新线程上调用PHP,这就是为什么每次都会获得一个新的进程id。
当然,这大大简化了。
我推荐阅读this的文章来加深理解。
编辑:似乎不同平台的流程有所不同。它在Windows上的工作方式与我上面描述的一样,但在Unix上执行多个apache进程。
发布于 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可以在较低的级别上做一些事情,比如更改locales
和setlocale()
不是线程安全的。
https://stackoverflow.com/questions/5171639
复制相似问题