/* start watcher and workers */
num_childs = srv->srvconf.max_worker;
if (num_childs > 0) {
int child = 0;
while (!child && !srv_shutdown && !graceful_shutdown) {
if (num_childs > 0) {
switch (fork()) {
case -1:/*出错返回父进-1*/
return -1;
case 0:/*fork成功 返回给子进程 0*/
child = 1;
break;
default::/*fork成功 返回给父进程的是子进程ID*/
num_childs--;
break;
}
} else {
int status;
if (-1 != wait(&status)) {
/**
* one of our workers went away
*/
num_childs++;
} else {
switch (errno) {
case EINTR:
/**
* if we receive a SIGHUP we have to close our logs ourself as we don't
* have the mainloop who can help us here
*/
if (handle_sig_hup) {
handle_sig_hup = 0;
log_error_cycle(srv);
/**
* forward to all procs in the process-group
*
* we also send it ourself
*/
if (!forwarded_sig_hup) {
forwarded_sig_hup = 1;
kill(0, SIGHUP);
}
}
break;
default:
break;
}
}
}
}
/**
* for the parent this is the exit-point
*/
if (!child) {
/**
* kill all children too
*/
if (graceful_shutdown) {
kill(0, SIGINT);
} else if (srv_shutdown) {
kill(0, SIGTERM);
}
log_error_close(srv);
network_close(srv);
connections_free(srv);
plugins_free(srv);
server_free(srv);
return 0;
}
}
这个模型主要是利用了fork函数的特性,fork函数 成功的时候,在子进程中获得返回值0,在父进程中获得为子进程的ID,失败出错时 是在父进程中获得-1
分享到:
相关推荐
在这个模型中,服务器主要分为两类进程:watcher进程和worker进程。watcher进程,顾名思义,扮演着管理者和监督者的角色,它负责创建并监控worker进程。而worker进程则是实际处理网络请求的执行者,它们是服务器的...
主要内容包括:lighttpd介绍与分析准备工作、lighttpd网络服务主模型、lighttpd数据结构、伸展树、日志系统、文件状态缓存器、配置信息加载、i/o多路复用技术模型、插件链、网络请求服务响应流程、请求响应数据快速...
2. 高性能:通过优化的事件驱动模型,lighttpd能够快速响应请求,特别适合动态内容较少、静态内容为主的网站。 3. 模块化设计:lighttpd支持多种插件,如FastCGI、SSI、URL重写等,方便扩展功能,同时也便于代码...
lighttpd采用异步事件驱动模型,这意味着它可以同时处理大量并发连接,而不会像某些同步模型的服务器那样,随着连接数量增加而性能急剧下降。这种设计使得lighttpd在处理高并发请求时表现优秀,对于流量密集型的网站...
1. **高性能**:lighttpd采用了高效的多线程模型,能够有效地处理高并发请求,尤其适合动态内容较少、静态内容较多的网站,如图片、视频分享平台等。 2. **轻量级**:相比于Apache等重量级服务器,lighttpd对系统...
它的特性包括模块化设计、高性能的事件模型以及对FastCGI、SCGI、SSI等协议的支持。 2. **CGI简介** CGI是Web服务器与外部程序交互的一种方式,使得服务器可以运行脚本语言(如Perl、Python、PHP等)编写的程序,...
2. **高效的事件模型**:采用epoll和kqueue这样的高效事件处理机制,使得lighttpd能处理大量并发连接,降低了CPU的使用率,提高了服务器响应速度。 3. **优化的内存管理**:lighttpd通过优化的内存分配策略,减少了...
1、下载mongoose使用mongoose中的example中的websocket_chat,实现websocket 2、websocket_chat源码下载路径 官网:https://cesanta.com 论坛:https://forum.mongoose-os.com/index.php?p=/categories/mongoose ...
在本压缩包中,我们重点关注`lighttpd.conf`配置文件以及用于控制Web服务器启动和停止的脚本。下面我们将深入探讨这两个核心元素。 一、lighttpd.conf配置文件详解 1. **基本设置**:`server.document-root` 指定...
lighttpd是众多OpenSource轻量级的web server中较为优秀的一个。支持FastCGI, CGI, Auth, 输出压缩(output compress), URL重写, Alias等重要功能,而Apache之所以流行,很大程度也是因为功能丰富,在lighttpd上很多...
Lighttpd是一个轻量级的Web服务器,它在性能和资源使用上表现出色,被广泛应用于需要高性能、低资源占用的场景中。对于从事网络编程和服务器开发的专业人士来说,源码分析是一个深入了解和优化服务器行为、提升性能...
lighttpd采用了事件驱动模型,这种模型基于非阻塞I/O,能够高效地处理大量并发连接。其主要由以下几个核心组件构成: 1. **主进程(Main Process)**:负责管理子进程,加载配置文件,处理信号,并进行全局初始化。...
`lighttpd-1.4.20/src/network.c`中的`lighttpd_network_write`和`lighttpd_network_read`函数负责读写操作,`lighttpd_evloop`则处理各种网络事件。 4. **HTTP协议处理** `lighttpd-1.4.20/src/http.c`包含了HTTP...
它采用了事件驱动的非阻塞I/O模型,使得在处理大量并发连接时表现出色,尤其适合动态内容较少、静态资源丰富的站点。由于其高效的设计,lighttpd在资源受限的环境,如ARM架构的设备上,成为了一个理想的Web服务器...
1. 高性能:lighttpd采用事件驱动模型,优化了对多连接的处理,使其在高并发环境下表现出色。 2. 轻量级:相比Apache等重量级服务器,lighttpd内存占用小,启动快速,更适合资源有限的服务器环境。 3. 快速:通过mod...
2. **高性能**:lighttpd采用了事件驱动模型,支持FastCGI、SSI、mod_proxy等特性,能有效处理高并发请求。 3. **模块化设计**:其模块化的架构允许用户按需加载功能,减少不必要的资源消耗。 4. **安全性**:...
### 在 Ubuntu 15.04/CentOS 7 中安装 Lighttpd Web 服务器的知识点详解 #### 一、Lighttpd 概述 **Lighttpd** 是一款轻量级、开源的Web服务器软件,它以其高效、低资源消耗和强大的功能集而闻名。与传统的Web...
这个例子中,Varnish将所有请求转发到本地的8080端口(Lighttpd监听的端口),并且不缓存带有“username”Cookie的请求。 3. **安装Lighttpd** 使用以下命令安装Lighttpd: ``` sudo apt-get install lighttpd ...
在Lighttpd安装目录下的`doc`目录中,有一个示例配置文件`lighttpd.conf`,可以将其复制到`conf`目录,并进行编辑: ``` mkdir conf cp /path/to/lighttpd-1.4.8/doc/lighttpd.conf /usr/local/lighttpd/conf/ ``` ...