アドレス
https://github.com/langsim/nginx-1.6.2-comment
はじめに
可読性の高いnginxソースコードのコメントを完成させたいと思っています。
コメントされないコンテンツ
- spdy 関連のコード。spdy は http2 に置き換えられているため。
- スレッド関連のコード。少なくともバージョン 1.6.2 では、nginx スレッドはまだ実験段階にあるため。
- Linuxプラットフォームコード以外
- epoll以外のイベントモデルのコード
- gcc以外の他のコンパイラのコード
- 完成度
coreディレクトリ60%
- イベントディレクトリ20 %
- http ディレクトリ 10%
- os ディレクトリ 80%
- 関数リンク リスト
http フィルター モジュール、ngx_http_top_header_filter および ngx_http_top_body_filter は 2 つの関数リンク リストを形成し、リンク リスト内の関数の呼び出し順序は同じになります。 ngx_modules 配列内の対応するモジュールと同様 順序は逆になります。
- http リクエスト処理の 11 ステージの多くは、複数のコールバック関数を持つことができます。同じステージ内のコールバック関数の呼び出し順序は、ngx_modules 配列内の対応するモジュールの順序と同じです。
- Log
nginx にはデフォルトで 2 つのログ ファイルがあります:
access.log: 各 http リクエストはその中に 1 行のレコードを生成します。
- error.log: nginx の実行時の一般的なエラーまたはデバッグ ログ。
- プロセス モデル
nginx の起動後に 4 つのプロセス状態が表示される場合があります:
フォアグラウンドで実行される単一プロセス
- 単一プロセス デーモン モード
- 1 つのマスター プロセス、1 つ (または複数) のワーカー プロセス、1 つ (または 0) ) ) キャッシュマネージャー プロセスと 1 つ (または 0) のキャッシュローダー プロセスがフォアグラウンドで一緒に実行されます
- マスター プロセス、1 つ (または複数) のワーカー プロセス、1 つ (または 0) のキャッシュマネージャー プロセス、および 1 つ (または 0) のキャッシュローダー プロセスが実行されますデーモンの状態。
-
マスタープロセスは、起動時に他のプロセスを起動するために使用され、起動完了後に他のプロセスを管理するために使用されます。
- ワーカー プロセス。実際にリンク リクエストを処理するために使用されます。
- キャッシュマネージャープロセスは、必要に応じてキャッシュファイルをクリーンアップするために使用されます。
- キャッシュローダープロセスが開始されると、メモリ内のキャッシュディレクトリ内の要件を満たすキャッシュファイルにインデックスを付け、要件を満たさないキャッシュファイルをクリアして終了します。
-
開始後、nginxを実行しているメインプロセスにシグナルを送信して終了します。
- プロセスの実行状態の切り替え
設定ファイルのリロード(リロード)
- ホットアップグレード実行ファイル
- コンパイル
nginx のコンパイルは、Linux プラットフォーム上の通常のオープンソース ソフトウェアのコンパイルと同じです。 running./configure && make && make install を実行すると、./configure の後に独自のカスタム オプションを追加できます。
nginxはシグナルを使用します
TERM、INTを使用して迅速なシャットダウンを行います
- QUITを使用して正常なシャットダウンを行います
- HUPを使用してスムーズな再起動と構成ファイルを再ロードします
- USR1はログファイルを再度開くため、ログをカットするときに便利です
- USR2スムーズなアップグレードの実行のために、プログラム
- WINCH は作業プロセスを正常にシャットダウンします
- nginx メモリ プール
nginx には 2 つのメモリ プールがあります
共有メモリにメモリを割り当てるために使用されるメモリ プール
- 通常のメモリ上のメモリ。目的はメモリの効率的な使用です
- nginxは計算ハッシュアルゴリズムを使用します
crc32
- crc16
- sha1
- murmurhash
- md5
- nignxプロセスの通信と同期
共有メモリの使用
- signal
- unix ソケット
- ').addClass('pre-numbering').hide();
$(this).addClass('has-numbering').parent().append($numbering);
for (i = 1; i
').text(i));
};
$numbering.fadeIn(1700);
});
});
上記は、(個人的なオープンソースの) nginx ソース コードのコメントを、関連する内容も含めて紹介しています。PHP チュートリアルに興味のある友人に役立つことを願っています。