2009-06-20 151 views
1

当Apache Web服务器处理http请求时,它通常会分叉一个新进程,除非有人正在使用类似fastcgi的东西。Apache HTTP Web服务器请求

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

如果我正在使用fastcgi,并且在主内存中有一个树状数据结构,我是否需要担心对树的并发读/写访问?

或者我能否仅仅依靠请求按照它们到达的顺序进行处理这一事实。

如果一个请求试图访问磁盘并且它会被阻塞,该怎么办?其他请求是否已处理或者是否在队列中等待?

如果我没有使用fastcgi,事情看起来更清晰了,因为我必须从数据库重新加载树数据结构来操作它,然后将其写回数据库 - 无需并发性。

本质上,我需要担心多个读者/写入我的主内存数据结构与Apache?

在此先感谢。

回答

0

当HTTP请求由Apache web服务器处理它通常派生一个新过程

否,通常预分叉过程中的一个接受连接并执行它。 There is no fork-per-request

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

+0

感谢澄清关于分叉,但我想关于进程创建的CGI应用程序 - 从wikepedia: “CGI是用于连接外部应用程序的Web服务器的协议CGI应用程序在一个单独的进程,这是在创建运行。每个请求的开始并在最后被拆除。“ 对不起,我希望我的问题现在会更有意义。 – pdshift 2009-06-20 17:58:14