nginx : ngx_cycle_t结构体

来源:互联网 发布:ubuntu卸载搜狗 编辑:程序博客网 时间:2024/06/05 17:56
//我们来看一看这神奇的ngx_cycle_s结构体吧,看一看庐山真面目.struct ngx_cycle_s {    /* 保存着所有模块配置项的结构体指针p,它首先是一个数组,       该数组每个成员又是一个指针,这个指针又指向了存储着指针的数组.*/    void                  **** conf_ctx ;    //内存池    ngx_pool_t               * pool ;    /*日志模块中提供了生成基本ngx_log_t日志对象的功能,      这里的log实际上是在在没有执行ngx_init_cycle方法前,      也就是还没有解析配置项前,如果有信息需要输出到日志,      就会暂时使用log对象,它会输出到屏幕.在执行ngx_init_cycle方法后,      会根据nginx.conf配置文件中的配置项,构造出正确的日志文件,      此时会对log重新赋值. */    ngx_log_t                * log ;    /* 由nginx.conf配置文件读取到日志路径后,将开始初始化error_log日志文件,       由于log对象还在用于输出日志到屏幕,这时候new_log将暂时替代log,       待初始化成功后,会用new_log的地址覆盖上面的指针.*/    ngx_log_t                 new_log ;    //下面files数组里元素的总数    ngx_uint_t                files_n ;    /*       对于epoll,rtsig这样的事件模块,会以有效文件句柄树来预先建立       这些ngx_connection_t结构体,以加速事件的收集,分发.这时files就会       保存所有ngx_connection_t的指针组成的数组,而文件句柄的值用来访问       files数组成员. */    ngx_connection_t        ** files ;    //可用连接池,与free_connection_n配合使用    ngx_connection_t         * free_connections ;    //连接池的个数    ngx_uint_t                free_connection_n ;    //可重用的连接队列    ngx_queue_t               reusable_connections_queue ;    //动态数组,每个成员存储ngx_listening_t成员,表示监听端口以及相关的参数    ngx_array_t               listening ;    /* 动态数组,保存着nginx所有要操作的目录,如果目录不在,将创建,       如果创建失败(例如权限不够),nginx将启动失败.*/    ngx_array_t               paths ;    /* 单链表容器,元素类型是ngx_open_file_t结构体,他表示nginx已经打开的       所有文件.事实上nginx框架不会向open_files链表中添加文件,       而是由对此感兴趣的模块向其中添加文件路径名,       nginx会在ngx_init_cycle方法中打开这些文件.*/    ngx_list_t                open_files ;       /* 单链表容器,每一个元素表示一块共享内存*/    ngx_list_t                shared_memory ;    //当前进程中所有连接对象的总数,于下面的connections成员配合使用.    ngx_uint_t                connection_n ;    //指向当前进程中多有连接对象    ngx_connection_t         * connections ;    //指向当前进程中所有读事件    ngx_event_t              * read_events ;    //指向当前进程中所有写事件    ngx_event_t              * write_events ;    /* 旧的ngx_cycle_t对象,用于引用上一个ngx_cycle_t对象中的成员.       例如 ngx_init_cycle方法在启动初期,需要建立一个临时ngx_cycle_t       对象来保存一些变量,再调用ngx_init_cycle方法时,就可以把       旧的ngx_cycle_t对象传进去,而这时,这个old_cycle指针       就会保存这个前期的ngx_cycle_t对象 */    ngx_cycle_t              * old_cycle ;    //配置文件相对于安装目录的路径    ngx_str_t                 conf_file ;    /* nginx处理配置文件时需要特殊处理的在命令行携带的参数,       一般是 -g选项携带的参数 */    ngx_str_t                 conf_param ;    //nginx配置文件路径    ngx_str_t                 conf_prefix ;    //nginx安装路径    ngx_str_t                 prefix ;    //用于进程间同步的文件所名称    ngx_str_t                 lock_file ;    //使用gethostname系统调用得到的主机名    ngx_str_t                 hostname ;};

0 0
原创粉丝点击