在系统整个运行过程中,需要使用的一些参数、资源需要统一的管理,nginx把这个任务交给了ngx_cycle_t
conf_ctx 指向模块的配置
pool 内存池
log 日志
new_log 新日志
files 存放socket和connection之间的关系
free_connections 空闲连接池
free_connection_n 空闲连接的个数
listening 监听者,用于监听外部的连接。
pathes 整个系统中使用的路径集合,比如 client_body_temp ,proxy_temp 等,这个也是在nginx_cycle.c 中的ngx_init_cycle中分配的,和上面listening分配方式差不多,实际路径的添加是在 ngx_file.c 中的 ngx_add_path 函数中
open_files 打开文件的集合,当需要打开一个文件时,先在这里找,如果找到直接返回,否则打开文件,放到这个集合中。文件代开在ngx_conf_file.c中的ngx_conf_open_file函数中实现的
shared_memory 系统所有的共享内存,如果往里面添加共享内存,需要检查下是否已经存在了,存在就不用放了,否则就放进去,在函数ngx_shared_memory_add函数中实现。
connection_n; 总的预先创建的connection数目
files_n 总的文件数目,不过好像没有设置,待确认
connections 所有的连接,free_connection也是指向它所指向的空间的
read_events write_events 读写事件,他们的个数和connection一样的,并且在初始化的时候,一个connection关联一个读事件、一个写事件。
old_cycle 旧的全局信息
conf_file 配置文件,如果系统默认,那么直接从objs/ngx_auto_conf.h中读取,也可以在通过参数设定
conf_param; 配置参数
conf_prefix; 配置文件前缀
prefix; 系统安装路径前缀
lock_file; 锁文件
hostname; 主机名
整个结构的初始化在nginx.c 中的ngx_init_cycle 中进行,下面介绍下这个函数
最后还剩下一部分比较乱,下次来补充