ホームページ  >  記事  >  バックエンド開発  >  php-fpm実行プロセスのソースコードの簡単な分析

php-fpm実行プロセスのソースコードの簡単な分析

WBOY
WBOYオリジナル
2016-06-23 13:38:531187ブラウズ

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

sapifpmfpmfpm_main.c:@main;

  1. fcgi_init()->fcgi_setup_signals(); 信号処理メソッドを設定します;

    sigaction(SIGUSR1, &new_sa, NULL);
    sigaction(SIGTERM, & new_さ、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. while (fcgi_accept_request(>= 0) {
  5. リクエスト初期化SG(request_info)、SG(sapi_headers)

    5.3. php_start_sapi(); リクエストHTTPヘッダー情報の初期化; php_hash_environment(TSRMLS_C); $_GET、$_POST、$_ENV、$_COOKIE、$_FILES などのリクエストの初期化がこのステップで行われます。 -time 初期化は jit_initialization に基づいて行われます。

    5.4. fpm_status_handle_request(TSRMLS_C);
  6. 5.7. php_execute_script(&file_handle TSRMLS_CC); 5.8. (TSRMLS_C);
  7. 5.9 .php_request_shutdown((void *) 0); リクエストが終了し、リクエストのライフサイクルで申請されたリソースが解放されます。




    fcgi_shutdown();

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。