이벤트 처리
NGX_EVENT_MODULE을 준수하는 모듈은 ngx_event_core_module과 ngx_epoll_module 두 가지가 있습니다
핵심 코드
ngx_modules[i]->ctx_index = ngx_event_max_module++;//设置模块内部索引 } ctx = ngx_pcalloc(cf->pool, sizeof(void *)); if (ctx == NULL) { return NGX_CONF_ERROR; } *ctx = ngx_pcalloc(cf->pool, ngx_event_max_module * sizeof(void *));//ctx指向数组 if (*ctx == NULL) { return NGX_CONF_ERROR; } *(void **) conf = ctx; for (i = 0; ngx_modules[i]; i++) { if (ngx_modules[i]->type != NGX_EVENT_MODULE) { continue; } m = ngx_modules[i]->ctx; if (m->create_conf) {//如果NGX_EVENT_MODULE类型模块存在create_conf函数那么就调用该模块的create_conf函数,挂载到event上下文中 (*ctx)[ngx_modules[i]->ctx_index] = m->create_conf(cf->cycle);//创建相应上下文 if ((*ctx)[ngx_modules[i]->ctx_index] == NULL) { return NGX_CONF_ERROR; } } } pcf = *cf; cf->ctx = ctx; cf->module_type = NGX_EVENT_MODULE;//设置模块环境 cf->cmd_type = NGX_EVENT_CONF; //设置命令类型 rv = ngx_conf_parse(cf, NULL);
그런 다음 이 명령은 ngx_event_core_module에 있습니다. ngx_event_connections 함수를 호출하고 연결 값을 1024로 설정합니다. 구조는 다음과 같습니다.
위의 내용을 포함하여 [nginx 소스코드 분석] 구성 분석(이벤트 범위)을 소개합니다. PHP 튜토리얼에 관심이 있는 친구들에게 도움이 되길 바랍니다.