进程模型--lighttpd
来源:互联网 发布:网络聚众赌博怎么处罚 编辑:程序博客网 时间:2024/05/18 20:12
一. Server
环境 //setlocale(LC_TIME, "C"); /* for nice %b handling in strfime() C locale,其采用的字符编码是所有本地 ANSI 字符集编码的公共部分,是用来书写C语言源程序的最小字符集*/
关闭控制台 //STDIN_FILENO STDOUT_FILENO tmpfd = open("/dev/null", O_RDWR); dup2(tmpfd, fd);close(tmpfd);
PID
rlimit 设置CORE和NOFILE
进程切换用户为配置指定用户
网络初始化// listen端口,ssl加载,句柄注册
设置最大连接数//不超过max_fds/2,默认max_fds/3
SIGPIPE 忽略;系统默认行为是退出,sendfile会导致这个触发
SIGUSR1 忽略;
SIGTERM 强制退出
SIGINT graceful退出
SIGALRM 定时器
while (!child && !srv_shutdown && !graceful_shutdown)
只要不关闭,父进程都会阻塞在这个循环中wait子进程,然后保证子进程的数量
收到ENITR如果配置forwarded_sig_hup会kill(0, SIGHUP)给子进程
退出时也会根据grace已否kill 0给子进程
反应式模型// 根据配置对select/poll/epoll等不同方式进行处理
1) 信号量标志处理
先调用plugins
handle_sig_hup
handle_sig_alarm
清理stat_cache
对读、写、关闭等操作异常情况进行更新其状态((srv->cur_ts - con->read_idle_ts > con->conf.max_read_idle))
流控进行处理
//2) 特定平台等待部分fid
3) 遍历joblist
依据每个job状态进行处理
原则,处理都是在主处理中根据标志位进行分发和调用
环境 //setlocale(LC_TIME, "C"); /* for nice %b handling in strfime() C locale,其采用的字符编码是所有本地 ANSI 字符集编码的公共部分,是用来书写C语言源程序的最小字符集*/
关闭控制台 //STDIN_FILENO STDOUT_FILENO tmpfd = open("/dev/null", O_RDWR); dup2(tmpfd, fd);close(tmpfd);
PID
rlimit 设置CORE和NOFILE
进程切换用户为配置指定用户
网络初始化// listen端口,ssl加载,句柄注册
设置最大连接数//不超过max_fds/2,默认max_fds/3
初始化插件
2. daemonize
SIGPIPE 忽略;系统默认行为是退出,sendfile会导致这个触发
SIGUSR1 忽略;
SIGTERM 强制退出
SIGINT graceful退出
SIGALRM 定时器
SIGHUP 调用相关插件//系统对SIGHUP信号的默认处理是终止收到该信号的进程
4. 初始化定时器
while (!child && !srv_shutdown && !graceful_shutdown)
只要不关闭,父进程都会阻塞在这个循环中wait子进程,然后保证子进程的数量
收到ENITR如果配置forwarded_sig_hup会kill(0, SIGHUP)给子进程
退出时也会根据grace已否kill 0给子进程
父进程就是控制进程(watcher),到此为止了,下面活动是子进程的
反应式模型// 根据配置对select/poll/epoll等不同方式进行处理
初始化stat_cache //对stat(),即文件大小,修改时间信息结果进行缓存
1) 信号量标志处理
先调用plugins
handle_sig_hup
handle_sig_alarm
清理stat_cache
对读、写、关闭等操作异常情况进行更新其状态((srv->cur_ts - con->read_idle_ts > con->conf.max_read_idle))
流控进行处理
//2) 特定平台等待部分fid
3) 遍历joblist
依据每个job状态进行处理
plugins处理
二. Mod
cgi, fastcgi,scgi,
ssi
rrdtool等
都会启动另外进程
PS: lighttpd的fastcgi这个紧凑,简单的东西已经独立出来,提供其他动态语言接入端使用了。
- 进程模型--lighttpd
- lighttpd 源码分析1:网络模型
- lighttpd 与libevent 网络模型分析
- lighttpd
- lighttpd
- lighttpd
- lighttpd
- 进程模型
- 进程模型
- 进程模型
- 进程模型与线程模型
- nginx进程模型,事件模型
- 操作系统进程模型分析
- Linux 进程内存模型
- android进程模型
- Apache进程池模型
- nginx的进程模型
- chromium学习:进程模型
- struts2 constant配置
- 进程与线程的一个简单解释
- JS面向对象编程之对象
- ubuntu 12.10 常见问题及解决方法
- IEEE1588学习笔记
- 进程模型--lighttpd
- 面向对象设计(OOD)七大原则
- 中文写入数据库乱码及Incorrect string value: '\xF0\x9F...' for column 'XXX' at row 1解决
- 在linux下编译windows下vlc
- 常用SVN命令
- 能实现弹出窗口里带单选按钮或者Selection的Function Modules
- 解决在Access中显示ActiveX部件不能创建对象
- linux集群有哪些
- 拥有有钱人的思维