zhanhailiang 日期:2015-03-09
SAPI\FPM\FPM\FPM_MAIN.C: @main;
Fcgi_init ()->fcgi_setup_signals (); Set up the signal processing method;
Sigaction (SIGUSR1, &new_sa, NULL);
Sigaction (SIGTERM, &new_sa, NULL);
Sigaction (Sigpipe, NULL, &old_sa);
Sapi_startup (&cgi_sapi_module);
->sapi_globals_ctor (&sapi_globals); Initialize global variables;
->reentrancy_startup ();
FCGI_FD = Fpm_run (&max_requests); Process initialization, calling fork () to create a process
Fcgi_init_request (&request, FCGI_FD); Request initialization;
while (Fcgi_accept_request (&request) >= 0) {
5.1. Init_request_info; Request initialization; SG (request_info), SG (sapi_headers)
5.2. Fpm_request_info ();  
5.3. Php_request_ Startup (Tsrmls_c);  
-> Php_start_sapi (); Request global variable initialization;  
-> sapi_activate ( Tsrmls_c); Request HTTP header information initialization;  
-> php_hash_environment (tsrmls_c); Request environment variable initial listening; $_get,$_post,$_env,$_server,$_ Cookie,$_files is the beginning of this step; $_request based on jit_initialization to determine if real-time initialization is required;  
5.4. Fpm_status_handle_request (Tsrmls_c);
5.5. Php_fopen_primary_script (&file_handle tsrmls_cc); open script;
5.5. Fpm_request_ Executing ();
5.7 php_execute_script (&file_handle tsrmls_cc); Execute script;
5.8. Fpm_request_end ( Tsrmls_c)
5.9. Php_request_shutdown ((void *) 0); Request end, release the requested resource in the request life cycle;
Fcgi_shutdown (); Release a persisted resource for the request
PHP-FPM implementation Process Source analysis