nginx重要的数据结构
来源:互联网 发布:小白自学编程 编辑:程序博客网 时间:2024/06/06 08:47
struct ngx_module_s {
//ctx_index是分类的模块计数器,nginx的模块可以分为四种:core、event、http和
//mail,每一种的模块又会各自计数一下,这个ctx_index就是每个模块在其所属类组的计数值
ngx_uint_t ctx_index;
//index是一个模块计数器,按照每个模块在ngx_modules[]数组中的声明顺序
//(见objs/ngx_modules.c),从0开始依次给每个模块进行编号
ngx_uint_t index;
/*...*/
ngx_uint_t version;
//ctx是模块的上下文,不同种类的模块有不同的上下文,四类模块就有四种模块上下文,实现为四个不同的结构体,所以ctx是void *
void *ctx;
//commands 是模块的指令集,nginx的每个模块都可以实现一些自定义的指令,这些指令
//写在配置文件的适当配置项中,每一个指令在源码中对应着一个 ngx_command_t结构的
//变量,nginx会从配置文件中把模块的指令读取出来放到模块的commands指令数组中,
//这些指令一般是把配置项的 参数值赋给一些程序中的变量或者是在不同的变量之间合并或
//转换数据(例如include指令),指令可以带参数也可以不带参数,你可以把这些指令想象
//为 unix的命令行或者是一种模板语言的指令。
ngx_command_t *commands;
//type就是模块的种类,前面已经说过,nginx模块分为core、event、http和mail四类,type用宏定义标识四个分类。
ngx_uint_t type;
//init_master、 init_module、init_process、init_thread、exit_thread、
//exit_process、 exit_master是函数指针,指向模块实现的自定义回调函数,
//这些回调函数分别在初始化master、初始化模块、初始化工作进程、初始化线程、
//退出线程、退出工作进程和退出master的时候被调用,如果模块需要在这些时机做处理,
//就可以实现对应的函数,并把它赋值给对应的函数指针来注册一个回调 函数接口
ngx_int_t (*init_master)(ngx_log_t *log);
ngx_int_t (*init_module)(ngx_cycle_t *cycle);
ngx_int_t (*init_process)(ngx_cycle_t *cycle);
ngx_int_t (*init_thread)(ngx_cycle_t *cycle);
void (*exit_thread)(ngx_cycle_t *cycle);
void (*exit_process)(ngx_cycle_t *cycle);
void (*exit_master)(ngx_cycle_t *cycle);
/*...*/
};
struct ngx_cycle_s {
void ****conf_ctx; //配置上下文数组(含所有模块)
ngx_pool_t *pool; //内存池
ngx_log_t *log; //日志
ngx_log_t new_log;
ngx_connection_t **files; //连接文件
ngx_connection_t *free_connections; //空闲连接
ngx_uint_t free_connection_n; //空闲连接个数
ngx_queue_t reusable_connections_queue; //再利用连接队列
ngx_array_t listening; //监听数组
ngx_array_t pathes; //路径数组
ngx_list_t open_files; //打开文件链表
ngx_list_t shared_memory; //共享内存链表
ngx_uint_t connection_n; //连接个数
ngx_uint_t files_n; //打开文件个数
ngx_connection_t *connections; //连接
ngx_event_t *read_events; //读事件
ngx_event_t *write_events; //写事件
ngx_cycle_t *old_cycle; //old cycle指针
ngx_str_t conf_file; //配置文件
ngx_str_t conf_param; //配置参数
ngx_str_t conf_prefix; //配置前缀
ngx_str_t prefix; //前缀
ngx_str_t lock_file; //锁文件
ngx_str_t hostname; //主机名
};
- nginx重要的数据结构
- 三个重要的数据结构
- 重要的 CFS 数据结构
- 几个重要的数据结构
- 内核重要的数据结构
- 重要的数据结构--堆栈
- 算法和数据结构的重要
- Postgres中重要的数据结构
- spring中重要的数据结构
- 数据结构的重要概念总结
- nginx的list数据结构
- Nginx的数据结构--字符串
- nginx的高级数据结构
- nginx封装的数据结构
- 字符驱动相关的重要的数据结构
- FFMPEG中重要的数据结构的挖掘
- FFMPEG中重要的数据结构的挖掘
- sk_buff有关的几个重要的数据结构
- 小孩发烧怎么办 - 强烈建议查看转载内容的详情,看视频介绍
- 输入正确的密码,依然无法登陆ubuntu系统
- LeetCode OJ:Remove Duplicates from Sorted Array
- I2C基础知识
- java设计模式之单例模式
- nginx重要的数据结构
- Android layout_weight理解
- C#详细讲解委托_事件
- mysql5.6.14 winx64绿色版安装步骤
- Home Automation & Networking Ebook
- [LeetCode]134.Gas Station
- UML类图中的关系介绍(依赖关系、泛化关系、关联关系(聚合和组合)、实现关系)
- 如何在oracle 11g 中导出空表
- java.lang.NoClassDefFoundError: org/apache/juli/logging/LogFactory的解决