地址
https://github.com/langsim/nginx-1.6.2-comment
簡介
希望完成一份高可讀性的nginx源碼註釋。
不會註釋的內容
- spdy相關程式碼,因為spdy已經被http2取代.
- 線程相關程式碼,因為至少在1.6.2版本nginx的線程還處在實驗性階段.
- linux之外其他平台的程式碼.
- epoll以外其他事件模型的程式碼
- gcc以外其他編譯器的程式碼.
- mail相關的程式碼.
完成程度
- core目錄60%
- 完成程度
- core目錄60%%
-
http目錄10%
os目錄80%
- 函數鍊錶
-
http filter模組之間,ngx_http_top_header_filter和ngx_http_top_body_filter模組之間,ngx_http_top_header_filter和ngx_http_top_body_filter模組會形成兩個函數的對應函數表順序相反。
http請求處理的11個階段中很多階段都可以多個回調函數,同一個階段的回調函數之間調用順序和對應模組在ngx_modules數組裡的順序相同。
日誌- nginx預設有兩個log檔:
-
access.log: 每一個http請求都會在裡面產生一行記錄。
error.log: nginx運行時的一些常規,錯誤或調試日誌。
進程模型- nginx啟動後可能出現四種進程狀態:
-
- 單進程前台運行
- 單進程守護程序模式
一個masterer,一個(或多個)worker個)cachemanager進程和一個(或0個)cacheloader進程共同在前台運行- 一個master進程,一個(或多個)worker進程,一個(或0個)cachemanager進程和一個(或0個)cacheloader進程在守護程式狀態下運行。
-
- master進程在啟動是用於啟動其他進程,啟動完成後用於管理其他進程。
- woker進程,用於實際處理連結請求。
cachemanager進程用於依要求清理cache檔案。
- cacheloader進程在啟動時會將cache目錄裡符合條件的cache檔案在記憶體裡建立索引,不符合要求的cache檔案清除,然後退出。
啟動後給正在運行的nginx的主程序發送訊號,然後退出。
- 進程運行狀態的切換
-
重載設定檔(reload)
熱升級可執行檔
編譯
nginx的編譯方式與linux平台- 編譯
- nginx的編譯與linux平台都執行原始碼configure && make && make install, 在./configure後可加入自己的自訂選項。
- nginx使用訊號
-
- TERM, INT 快速關閉
- QUIT 從容關閉
HUP 平滑重啟,重新載入設定檔
USR1 重新開啟檔案,在升級可執行大文件,在升級時可平滑程式
WINCH 從容關閉工作進程
- nginx記憶體池
- nginx有兩個記憶體池
在共享記憶體上分配記憶體用的記憶體池
- 在普通記憶體上申請記憶體的記憶體池高效率的利用記憶體
- nginx使用到的計算hash演算法
-
- crc32
- crc16
sha1
murmurhash
- sha1
- murmurh
- 訊號
unix套接字
').addClass('pre-numbering').hide();
$(this).addClass('has-numbering').parent().append($numbering);
for (i = 1; i
').text(i));
};
$numbering.fadeIn(1700);
});
});
以上就介紹了(個人開源)nginx原始碼註釋,包括了方面的內容,希望對PHP教程有興趣的朋友有所幫助。 🎜
🎜
🎜