php-fpm執行流程源碼淺析,php-fpm源碼淺析

來源:互聯網
上載者:User

php-fpm執行流程源碼淺析,php-fpm源碼淺析

作者:zhanhailiang 日期:2015-03-09

sapi\fpm\fpm\fpm_main.c:@main;

  1. fcgi_init()->fcgi_setup_signals(); 設定訊號處理方法;

    sigaction(SIGUSR1, &new_sa, NULL);
    sigaction(SIGTERM, &new_sa, NULL);
    sigaction(SIGPIPE, NULL, &old_sa);

  2. sapi_startup(&cgi_sapi_module);
    ->sapi_globals_ctor(&sapi_globals); 初始化全域變數; 
    ->reentrancy_startup();

  3. fcgi_fd = fpm_run(&max_requests); 進程初始化,調用fork()建立進程

  4. fcgi_init_request(&request, fcgi_fd); 請求初始化;

  5. while (fcgi_accept_request(&request) >= 0) {
    5.1. init_request_info; 請求初始化; SG(request_info), SG(sapi_headers)
    5.2. fpm_request_info(); 
    5.3. php_request_startup(TSRMLS_C); 
    -> php_start_sapi(); 請求全域變數初始化; 
    -> sapi_activate(TSRMLS_C); 請求HTTP頭資訊初始化; 
    -> php_hash_environment(TSRMLS_C); 請求環境變數初始傾聽; 如$_GET,$_POST,$_ENV,$_SERVER,$_COOKIE,$_FILES就是在這步實始化; $_REQUEST根據jit_initialization判斷是否需要即時初始化; 
    5.4. fpm_status_handle_request(TSRMLS_C); 
    5.5. php_fopen_primary_script(&file_handle TSRMLS_CC); 開啟指令碼; 
    5.5. fpm_request_executing();
    5.7. php_execute_script(&file_handle TSRMLS_CC); 執行指令碼; 
    5.8. fpm_request_end(TSRMLS_C); 
    5.9. php_request_shutdown((void *) 0); 請求結束, 釋放請求生命週期中申請的資源;

  6. fcgi_shutdown(); 釋放申請的持久化資源

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.