>  기사  >  백엔드 개발  >  [nginx 소스코드 분석] 구성 분석(이벤트 범위)

[nginx 소스코드 분석] 구성 분석(이벤트 범위)

WBOY
WBOY원래의
2016-08-08 09:24:451044검색

이벤트 처리


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 튜토리얼에 관심이 있는 친구들에게 도움이 되길 바랍니다.

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.