Apache HTTP Web服务器请求

Apache HTTP Web服务器请求,apache,concurrency,fastcgi,Apache,Concurrency,Fastcgi,当Apache web服务器处理http请求时,它通常会派生一个新的进程,除非使用类似fastcgi的东西 我的问题与使用fastcgi时的“同时请求”有关 如果我使用的是fastcgi,并且我在主内存中有一个类似树的数据结构,那么我需要担心对树的并发读/写访问吗 或者我可以依赖这样一个事实:请求是按照它们到达的顺序处理的 如果一个请求试图访问磁盘,但它被阻塞了怎么办?其他请求是否已处理,还是在队列中等待 如果我不使用fastcgi,事情似乎更清楚,因为我必须从数据库重新加载树数据结构来操作它,

当Apache web服务器处理http请求时,它通常会派生一个新的进程,除非使用类似fastcgi的东西

我的问题与使用fastcgi时的“同时请求”有关

如果我使用的是fastcgi,并且我在主内存中有一个类似树的数据结构,那么我需要担心对树的并发读/写访问吗

或者我可以依赖这样一个事实:请求是按照它们到达的顺序处理的

如果一个请求试图访问磁盘,但它被阻塞了怎么办?其他请求是否已处理,还是在队列中等待

如果我不使用fastcgi,事情似乎更清楚,因为我必须从数据库重新加载树数据结构来操作它,然后将它写回数据库-不需要并发性

从本质上讲,我是否需要担心使用Apache对主存数据结构进行多个读/写操作

提前谢谢

当Apache web服务器处理http请求时,它通常会派生一个新的进程

不,通常一个预分叉进程接受连接并执行它。那里 每个请求没有fork

如果您的FastCGI应用程序是单线程的,那么您也不必担心concurrecy 如果您在mod prefork中运行。但是,如果您在共享内存中管理数据结构,则
我们应该担心并发性

感谢您对forking的澄清,但我想到的是关于流程创建的CGI应用程序——来自wikepedia:“CGI是一种用于将外部应用程序连接到web服务器的协议。CGI应用程序在单独的流程中运行,该流程在每个请求开始时创建,在请求结束时拆除。”很抱歉造成混淆,希望我的问题现在会更有意义。我没有完全理解共享内存解释的问题-我为有点慢而道歉。假设一个请求进入,mod prefork进程修改共享内存。下一个请求进入并修改它。如果订单被保留,我不清楚问题在哪里。好的。。。我指的是阿帕奇本身。是的,您是对的,CGI是按请求分叉的,并在响应后退出,因此,不应该存在任何并发问题,除非您访问进程共享内存vima mmap或shmem,我认为您不会。