`
luckyclouds
  • 浏览: 111516 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

lighttpd中的watcher workers模型

    博客分类:
  • c
阅读更多
/* 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
分享到:
评论

相关推荐

    lighttpd分析

    在这个模型中,服务器主要分为两类进程:watcher进程和worker进程。watcher进程,顾名思义,扮演着管理者和监督者的角色,它负责创建并监控worker进程。而worker进程则是实际处理网络请求的执行者,它们是服务器的...

    Lighttpd源码分析_mobi

    主要内容包括:lighttpd介绍与分析准备工作、lighttpd网络服务主模型、lighttpd数据结构、伸展树、日志系统、文件状态缓存器、配置信息加载、i/o多路复用技术模型、插件链、网络请求服务响应流程、请求响应数据快速...

    lighttpd代码阅读资料

    2. 高性能:通过优化的事件驱动模型,lighttpd能够快速响应请求,特别适合动态内容较少、静态内容为主的网站。 3. 模块化设计:lighttpd支持多种插件,如FastCGI、SSI、URL重写等,方便扩展功能,同时也便于代码...

    lighttpd-1.4.45_lighttpd服务器_

    lighttpd采用异步事件驱动模型,这意味着它可以同时处理大量并发连接,而不会像某些同步模型的服务器那样,随着连接数量增加而性能急剧下降。这种设计使得lighttpd在处理高并发请求时表现优秀,对于流量密集型的网站...

    lighttpd-1.4.18

    1. **高性能**:lighttpd采用了高效的多线程模型,能够有效地处理高并发请求,尤其适合动态内容较少、静态内容较多的网站,如图片、视频分享平台等。 2. **轻量级**:相比于Apache等重量级服务器,lighttpd对系统...

    搭建lighttpd+cgi的代码包

    它的特性包括模块化设计、高性能的事件模型以及对FastCGI、SCGI、SSI等协议的支持。 2. **CGI简介** CGI是Web服务器与外部程序交互的一种方式,使得服务器可以运行脚本语言(如Perl、Python、PHP等)编写的程序,...

    lighttpd1.4.25代码

    2. **高效的事件模型**:采用epoll和kqueue这样的高效事件处理机制,使得lighttpd能处理大量并发连接,降低了CPU的使用率,提高了服务器响应速度。 3. **优化的内存管理**:lighttpd通过优化的内存分配策略,减少了...

    ubuntu lighttpd实现websocket

    1、下载mongoose使用mongoose中的example中的websocket_chat,实现websocket 2、websocket_chat源码下载路径 官网:https://cesanta.com 论坛:https://forum.mongoose-os.com/index.php?p=/categories/mongoose ...

    lighttpd配置和启动脚本

    在本压缩包中,我们重点关注`lighttpd.conf`配置文件以及用于控制Web服务器启动和停止的脚本。下面我们将深入探讨这两个核心元素。 一、lighttpd.conf配置文件详解 1. **基本设置**:`server.document-root` 指定...

    最新lighttpd源码 lighttpd-1.4.22

    lighttpd是众多OpenSource轻量级的web server中较为优秀的一个。支持FastCGI, CGI, Auth, 输出压缩(output compress), URL重写, Alias等重要功能,而Apache之所以流行,很大程度也是因为功能丰富,在lighttpd上很多...

    Lighttpd源码分析

    Lighttpd是一个轻量级的Web服务器,它在性能和资源使用上表现出色,被广泛应用于需要高性能、低资源占用的场景中。对于从事网络编程和服务器开发的专业人士来说,源码分析是一个深入了解和优化服务器行为、提升性能...

    lighttpd 源代码

    lighttpd采用了事件驱动模型,这种模型基于非阻塞I/O,能够高效地处理大量并发连接。其主要由以下几个核心组件构成: 1. **主进程(Main Process)**:负责管理子进程,加载配置文件,处理信号,并进行全局初始化。...

    lighttpd-1.4.20源代码

    `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...

    ARM平台lighttpd服务器

    它采用了事件驱动的非阻塞I/O模型,使得在处理大量并发连接时表现出色,尤其适合动态内容较少、静态资源丰富的站点。由于其高效的设计,lighttpd在资源受限的环境,如ARM架构的设备上,成为了一个理想的Web服务器...

    lighttpd-1.4.39.tar.gz

    1. 高性能:lighttpd采用事件驱动模型,优化了对多连接的处理,使其在高并发环境下表现出色。 2. 轻量级:相比Apache等重量级服务器,lighttpd内存占用小,启动快速,更适合资源有限的服务器环境。 3. 快速:通过mod...

    lighttpd-1.4.49.tar.gz

    2. **高性能**:lighttpd采用了事件驱动模型,支持FastCGI、SSI、mod_proxy等特性,能有效处理高并发请求。 3. **模块化设计**:其模块化的架构允许用户按需加载功能,减少不必要的资源消耗。 4. **安全性**:...

    在 Ubuntu 15.04/CentOS 7 中安装 Lighttpd Web 服务器的方法

    ### 在 Ubuntu 15.04/CentOS 7 中安装 Lighttpd Web 服务器的知识点详解 #### 一、Lighttpd 概述 **Lighttpd** 是一款轻量级、开源的Web服务器软件,它以其高效、低资源消耗和强大的功能集而闻名。与传统的Web...

    varnish+lighttpd配置

    这个例子中,Varnish将所有请求转发到本地的8080端口(Lighttpd监听的端口),并且不缓存带有“username”Cookie的请求。 3. **安装Lighttpd** 使用以下命令安装Lighttpd: ``` sudo apt-get install lighttpd ...

    lighttpd 安装配置

    在Lighttpd安装目录下的`doc`目录中,有一个示例配置文件`lighttpd.conf`,可以将其复制到`conf`目录,并进行编辑: ``` mkdir conf cp /path/to/lighttpd-1.4.8/doc/lighttpd.conf /usr/local/lighttpd/conf/ ``` ...

Global site tag (gtag.js) - Google Analytics