Nginx 메인의 ngx_init_cycle()에 대한 예비 연구(1부)
ngx_init_cycle() 함수는 매우 크기 때문에 처음 400줄 이상의 함수 호출 관계만 여기에 제공됩니다. , 그리고 마지막 400+에 대해서는 이후 기사에서 논의할 것입니다.
-->ngx_init_cycle(&init_cycle) -->ngx_timezone_update() -->time() -->localtime()注1: -->ngx_timeofday() -->ngx_time_update() -->ngx_gettimeofday() -- gettimeofday() -->ngx_gmtime() -->ngx_localtime() -->ngx_memory_barrier() -->ngx_increase_pipe_generation() -->ngx_create_pool() -->ngx_memalign() -- ngx_alloc(size, log) -->ngx_pcalloc() -->ngx_palloc() -->ngx_align_ptr()注2: -->ngx_palloc_block() -->ngx_memalign() -->ngx_align_ptr() -->ngx_palloc_large() -->ngx_alloc() -->malloc() -->ngx_palloc() -->ngx_memzero() -->memset() -->ngx_list_init() -->ngx_palloc() -->ngx_queue_init() -->ngx_strlen() -- strlen() -->ngx_pnalloc() -->ngx_palloc_block() -->ngx_palloc_large() -->ngx_strlow() -->ngx_tolower() -- ((c >= 'A' && c <= 'Z') ? (c | 0x20) : c) -->ngx_array_create() -->ngx_palloc() -->ngx_array_init() -->ngx_palloc() -->ngx_conf_param() -->ngx_memzero() -->ngx_conf_parse() -->ngx_conf_parse() -->ngx_open_file() -- open() -->ngx_fd_info() -- fstat() -->ngx_alloc() -->ngx_conf_read_token() -->ngx_file_size() -->ngx_memmove() -- memmove() -->ngx_read_file() -- read() -->ngx_write_console() -- ngx_write_fd() --> write() -->ngx_array_push() -->ngx_conf_handler() -->ngx_show_dso_directives() -->ngx_get_conf() -->ngx_is_dynamic_module() -->ngx_get_conf() -->ngx_test_lockfile() -->ngx_open_file() -->ngx_close_file() -->ngx_delete_file() -->ngx_create_paths() -->ngx_create_dir() -- mkdir() -->ngx_file_info() -->ngx_log_open_default() -->ngx_conf_open_file()
다음은 익숙하지 않은 기능의 사용법 및 지식 포인트입니다.
참고 1: time() 및 localtime() 함수는 Nginx 자체에서 구현되지 않고 라이브러리 함수입니다. 사용법은 다음과 같습니다
/** * filename: test_localtime.c * description: used to see the usage of function localtime() * date: 2015-03-06 * author: HowardKing * version: 1.0 */ #include <stdio.h> #include <stdlib.h> #include <time.h> int main(void) { time_t timer; // time_t is long int struct tm *tblock; time(NULL); tblock = localtime(&timer); printf("Local time is: %s", asctime(tblock)); return 0; }
<span style="white-space:pre"> </span>Local time is: Fri Jul 31 05:00:00 4461676
/** * filename: test_unsigned_long.c * description: find out the size of type long * date: 20150306 * author: HowardKing * version: v1.0 */ #include <stdio.h> #include <stdlib.h> int main(void) { int ii = 100; unsigned long ll = 100; printf("%d\n", sizeof(ii)); printf("%d\n", sizeof(ll)); return 0; }
4 8
위 내용은 관련 내용을 포함하여 Nginx ngx_init_cycle()(1부)의 주요 탐색을 소개합니다. PHP 튜토리얼에 관심이 있는 친구들에게 도움이 되기를 바랍니다.