Heim > Backend-Entwicklung > PHP-Tutorial > [Nginx-Quellcode-Analyse] Hauptfunktionsanalyse

[Nginx-Quellcode-Analyse] Hauptfunktionsanalyse

WBOY
Freigeben: 2016-08-08 09:24:52
Original
949 Leute haben es durchsucht

ngx_strerror_init

Die Hauptfunktion besteht darin, zunächst die Fehlerinformationen im Array ngx_sys_errlist zu speichern und ein Zuordnungsarray von errno->errmsg zu erstellen. Wenn im System ein Fehler auftritt, können Sie errmsg direkt über errno finden , wodurch der API-Aufruf reduziert wird.

ngx_get_options(argc, argv)

Diese Funktion setzt hauptsächlich einige Flag-Variablen basierend auf Benutzereingaben und speichert die vom Benutzer eingegebenen Parameter.

Param		flag
?/h			ngx_show_version=1/ngx_show_help=1
v			ngx_show_version=1
V			ngx_show_version=1/ngx_show_configure=1
t			ngx_test_config=1
q			ngx_quiet_mode=1
p			ngx_prefix=argv[index]支持-p/home/work/nginx or –p /home/work/nginx
c			ngx_conf_file=p支持方式同上
g			ngx_conf_param=p	支持方式同上
s			ngx_signal=p/ngx_process=NGX_PROCESS_SIGNALLER(stop、quit、reopen、reload)
Nach dem Login kopieren

ngx_time_init->ngx_time_update

                                                ngx_regex_ init( )

variable									format
ngx_cached_time = tp;						
ngx_cached_http_time.data = p0;				“Mon, 28 Sep 1970 06:00:00 GMT”
ngx_cached_err_log_time.data = p1;			“1970/09/28 12:00:00”
ngx_cached_http_log_time.data = p2;			“28/Sep/1970:12:00:00 +0600”
ngx_cached_http_log_iso8601.data = p3		        “1970-09-28T12:00:00+06:00”
Nach dem Login kopieren
Setzt hauptsächlich zwei pcre globale Zuordnungs- und Recyclingfunktionen

ngx_pid = getpid();//Erhalte die Hauptprozess-PID

ngx_log_init(ngx_prefix)


Der endgültige Rückgabewert und das von der Funktion erstellte ngx_log
#if (NGX_WIN32)
     if (name[1] != ':') {
#else
     if (name[0] != '/') {
#endif

         if (prefix) {
             plen = ngx_strlen(prefix);//如果用户输入了-p prefix

         } else {
#ifdef NGX_PREFIX
             prefix = (u_char *) NGX_PREFIX;//用户没输入,使用configure路径
             plen = ngx_strlen(prefix);
#else
             plen = 0;
#endif
         }

         if (plen) {
             name = malloc(plen + nlen + 2);
             if (name == NULL) {
                 return NULL;
             }

             p = ngx_cpymem(name, prefix, plen);//copy prefix

             if (!ngx_path_separator(*(p - 1))) {
                 *p++ = '/';
             }

             ngx_cpystrn(p, (u_char *) NGX_ERROR_LOG_PATH, nlen + 1);//copy path

             p = name;
         }
     }
Nach dem Login kopieren

init_cycle.pool = ngx_create_pool(1024, log);// Ordnen Sie einen Speicherpoolknoten zu, einen bestimmten Speicherpool. Weitere Informationen finden Sie im Speicherpool-Analysedokument

ngx_log
{
	ngx_log.file = &ngx_log_file;
	{
		ngx_fd_t		fd;//打开的错误日志
		ngx_str_t		name;//未设置
		u_char		*buffer;//未设置
		u_char		*pos;//未设置
		u_char		*last;//未设置
	}
	log_level = NGX_LOG_NOTICE;
}
Nach dem Login kopieren
Einzelheiten

ngx_save_argv

Die Funktion speichert die vom Benutzer eingegebenen Parameter im Array ngx_argv

ngx_process_options

Diese Funktion verarbeitet hauptsächlich Benutzereingabeparameter, Konfigurationsdateien und Tests Konfigurationsdateien,

conf_file =/home/work/hunter/nginx/nginx_gdb/conf/nginx.conf

conf_prefix =/home/work/hunter/nginx/nginx_gdb/conf

Präfix =/home/work/hunter/nginx/nginx_gdb

ngx_crc32_table_init()//CRC-Tabelle initialisieren

//Modulindex jedes Moduls festlegen

und analysieren Sie dann die Konfigurationsanalyse

ngx_max_module = 0;
for (i = 0; ngx_modules[i]; i++) {
ngx_modules[i]->index = ngx_max_module++;
}
Nach dem Login kopieren
ngx_init_cycl()

Das Obige stellt die Hauptfunktionsanalyse von [Nginx-Quellcode-Analyse] vor, einschließlich Aspekten des Inhalts. Ich hoffe, dass es für Freunde hilfreich sein wird, die sich für PHP-Tutorials interessieren.


Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage