ngx_cycle_t *cycle, init_cycle; init_cycle.pool = ngx_create_pool(1024, log);//创建内存池 if (init_cycle.pool == NULL) { return 1; } ... ... if (ngx_process_options(&init_cycle) != NGX_OK) { return 1; } cycle = ngx_init_cycle(&init_cycle); 可见在调用ngx_int_cycle之...
ngx_cycle_t * ngx_init_cycle(ngx_cycle_t *old_cycle); 先看一下这个old_cycle參数从哪里来的: ngx_cycle_t *cycle, init_cycle; init_cycle.pool = ngx_create_pool(1024, log);//创建内存池 if (init_cycle.pool == NULL) { return 1; } ... ... if (ngx_process_options(&init_cycle...
因为ngx_listening_t存储监听有关的信息,ngx_connection_t存储连接有关的信息和读写事件,而ngx_cycle_t这个结构体几乎就是核心结构体,在nginx初始化时这个结构体存储了许多东西,而且它有个初始化的函数:ngx_init_cycle,这个函数的代码有700多行。可见这个结构体有多种要。于是就花了半天来找这几个结构体里面成员...
* ngx_init_cycle 方法,在启动初期,需要建立一个临时的 ngx_cycle_t 对象 * 保存一些变量,再调用 ngx_init_cycle 方法时就可以把旧的 ngx_cycle_t * 对象传进去,而这时 old_cycle 对象就会保存这个前期的 ngx_cycle_t 对象 */ngx_cycle_t*old_cycle;/* * 配置文件相对于安装目录的路径名称 */ngx_str...
Nginx 采用了分层模块结构设计,顶层模块由 Nginx 自身管理。比如, 在ngx_init_cycle有一段代码为: ngx_cycle_t*ngx_init_cycle(ngx_cycle_t*old_cycle){ngx_uint_t i,n;// ...for(i=0;cycle->modules[i];i++){if(cycle->modules[i]->type!=NGX_CORE_MODULE){continue;}module=cycle->modules[...
char *(*init_conf)(ngx_cycle_t *cycle, void *conf); } ngx_core_module_t; 在src\core\nginx.c中实现了这个结构体: static ngx_core_module_t ngx_core_module_ctx = { ngx_string("core"), //name字段 ngx_core_module_create_conf,//实现该接口的第一个方法 ...
/*用来将当前连接以双向链表元素的形式添加到ngx_cycle_t核心结构体 *的reuseable_connection_queue双向链表中,表示可以重用的连接*/ ngx_queue_t queue; /* 省去部分 */ }; 二、数据结构图 整个链表实现的是双向链表。 遍历链表后,获取链表的主体业务数据结构(上图为ngx_connection_s)使用ngx_queue_data方法...
整个配置在 cycle->conf_ctx.ngx 只创建了必须模块的配置对象,⽽有些核⼼模块不⼀定会⽤到,所以对于这些模块,若配置⽂件中使⽤了,才进⾏创建,如http模块。ngx_conf_param ,根据命令⾏参数初始化conf.ctx ngx_conf_parse, 根据配置⽂件初始化 conf.ctx 每个模块定义⾃⼰的创建函数,如...
ngx_master_process_cycle()函数,这个函数会启动工作进程干活,并且会处理信号量,处理的过程中会杀死或者创建新的进程。 具体流程 a) 阻塞所有nginx关心的信号; b) 设置进程的title(如果你用ps –aux来查看就可以分清master与worker进程,这就是title的作用。); ...
模块初始化(init_module) C代码 1. static ngx_int_t 31、; 2. ngx_http_push_stream_init_module(ngx_cycle_t *cycle) 3. 4. ngx_core_conf_t *ccf = 32、60;(ngx_core_conf_t *) ngx_get_conf(cycle->conf_ctx, ngx_core_module 5. ); 6. 7. if (ngx_http_push_stream_module_...