ngx_array_t config_dump;ngx_list_topen_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_int_t gmtoff; }ngx_time_t; 1. 2. 3. 4. 5. 6. 7. 8. Nginx 定义了以下全局变量用于缓存时间: /* 格林威治时间1970年1月1日凌晨0点0分0秒到当前时间的毫秒数 */ volatile ngx_msec_t ngx_current_msec; /* ngx_time_t结构体形式的当前时间 */ volatile ngx_time_t *ngx_cached_tim...
1: void 2: ngx_master_process_cycle(ngx_cycle_t *cycle) 3: { 4: char *title; 5: u_char *p; 6: size_t size; 7: ngx_int_t i; 8: ngx_uint_t n, sigio; 9: sigset_t set; 10: struct itimerval itv; 11: ngx_uint_t live; 12: ngx_msec_t delay; 13: ngx_listening_t *...
ngx_int_t ngx_trylock_accept_mutex(ngx_cycle_t *cycle) { /* 使用进程间的同步锁,试图获取accept_mutex。注意,ngx_trylock_accept_mutex返回1表示成功 拿到锁,返回0表示获取锁失败。这个获取所的过程是非堵塞的。此时一旦锁被其它worker子进程占 用,该方法会立马返回。 */ if (ngx_shmtx_trylock(&ngx_...
nginx记录状态码的函数是ngx_http_reqstat_log_handler。 这个函数在ngx_http_reqstat_init函数放在log phase阶段中。 static ngx_int_t ngx_http_reqstat_init(ngx_conf_t *cf) { ... h = ngx_array_push(&cmcf->phases[NGX_HTTP_LOG_PHASE].handlers); ...
ngx_msec_tpost_accept_timeout;// 前一个ngx_listening_t结构,多个ngx_listening_t结构体之间由previous指针组成单链表ngx_listening_t*previous;// 当前监听句柄对应着的ngx_connection_t结构体ngx_connection_t*connection;ngx_uint_tworker;// 标志位,为1则表示当前监听句柄有效,且执行ngx_init_cycle时不关闭...
ngx_int_t (*init)(ngx_cycle_t *cycle, ngx_msec_t timer); //初始化 void(*done)(ngx_cycle_t *cycle);//回收资源 } ngx_event_actions_t; externngx_event_actions_t ngx_event_actions; //定义全局的 ngx_event_actions #definengx_process_changes ngx_event_actions.process_changes#definengx...
ngx_msec_t post_accept_timeout;//~秒后仍然没有收到用户的数据,就丢弃该连接 //前一个ngx_listening_t结构,用于组成单链表 ngx_listening_t *previous; ngx_connection_t *connection;//当前监听句柄对应的ngx_connection_t结构体 unsigned open:1;//为1表示监听句柄有效,为0表示正常关闭 ...
void ngx_http_discarded_request_body_handler(ngx_http_request_t *r) { ... c = r->connection; rev = c->read; if (rev->timedout) { c->timedout = 1; c->error = 1; ngx_http_finalize_request(r, NGX_ERROR); return; } if (r->lingering_time) { timer = (ngx_msec_t) (r-...
node = ngx_rbtree_min(root, sentinel); timer = (ngx_msec_int_t) (node->key - ngx_current_msec); return (ngx_msec_t) (timer > 0 ? timer : 0); } 同时nginx在每次循环的最后,会从红黑树中查看是否有事件已经过期,如果过期,标记timeout=1,并调用事件的handler; ...