lighttpd是当前众多开源的服务器中比较优秀的一个,虽然说国内的很多大型网站
如:新浪、淘宝等都没有采用,但是它的设计巧妙精简,效率高,整个项目代码大约在3.8w左右,是非常好的学习材料,
/*lighttpd服务器采用的是watcher-worker模式,其中watcher是主进程,worker是由主进程fork的
子进程,watcher主要有2个作用,
第一:根据用户预先设定的最大worker值来fork子进程(worker),其中这个值是在配置文件中的
第二:监控worker进程的工作情况,如果有worker进程,那么watcher就会创建新的worker进程*/
/*此段代码在server.c文件的main函数中*/
#ifdef HAVE_FORK
/* start watcher and workers */
num_childs = srv->srvconf.max_worker;/*num_childs保存了所要创建worker进程的数量*/
if (num_childs > 0) {/*num_childs>0,有需要创建的worker进程*/
int child = 0;/*child=0,表示是wather进程,即父进程*/
while (!child && !srv_shutdown && !graceful_shutdown) {
if (num_childs > 0) {
switch (fork()) {
case -1:
return -1;
case 0:
child = 1;
break;
default:
num_childs--;
break;