• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            那誰的技術博客

            感興趣領域:高性能服務器編程,存儲,算法,Linux內核
            隨筆 - 210, 文章 - 0, 評論 - 1183, 引用 - 0
            數據加載中……

            Nginx0.7.61代碼分析(三)--事件處理

            Nginx里面的事件處理與其他服務器所做的事件處理模型其實大同小異---都是封裝了一個事件通知的結構體,然后會對每個平臺上常用的事件觸發器做封裝(epoll/select/poll/...),根據編譯時配置來決定選擇哪個事件處理器,當然,這個選擇也可以在配置文件中指定。

            封裝事件處理的結構體在ngx_event_s中定義,其中的handler是處理事件的函數指針。

            對于監聽socket而言,這個handler函數指針指向的是函數ngx_event_accept函數。顯然,這個函數是用于接收新連接。
            當接收新的連接之后,對連接socket而言,這個函數指針指向ngx_http_init_request 函數。假如這個函數執行成功,handler函數指針會改為指向ngx_http_process_request_line函數。其他的以此類推,我沒有繼續跟進這些與http具體業務相關的處理函數。

            所以,可以看到,在處理一個連接請求的每個階段,都對應的是不同的handler函數,在每個handler函數中,會在執行成功之后修改handler函數指針指向下一個階段的處理函數。

            與之前分析過的lighhtpd的狀態機相比,Nginx里面的handler函數之間,耦合關系更緊密一些,也就是說,在狀態處理的每個階段,都需要知道下一個階段是由哪個函數進行處理。我個人更喜歡lighttpd的狀態機,因為這個狀態機使得每個階段的狀態耦合的不那么緊密,每次狀態處理完畢,該狀態的處理函數只需要保存本次處理的結果,然后進入狀態機處理函數中,由它來選擇處理的走向。




            posted on 2009-12-09 23:47 那誰 閱讀(5396) 評論(0)  編輯 收藏 引用 所屬分類: 服務器設計Nginx

            久久99精品久久久久久噜噜 | 99国产欧美久久久精品蜜芽| 久久精品亚洲男人的天堂 | 精品久久久久国产免费| 久久国产精品一区| 久久久噜噜噜久久| 久久综合香蕉国产蜜臀AV| 人妻无码中文久久久久专区| 狠狠色伊人久久精品综合网 | 国产精品岛国久久久久| 伊人久久大香线蕉AV一区二区| 久久婷婷五月综合国产尤物app| 99久久国产亚洲高清观看2024| 久久精品国产色蜜蜜麻豆| 97超级碰碰碰碰久久久久| 人妻无码αv中文字幕久久琪琪布 人妻无码久久一区二区三区免费 人妻无码中文久久久久专区 | 99精品国产综合久久久久五月天| 久久亚洲精品视频| 少妇高潮惨叫久久久久久| 四虎影视久久久免费观看| 亚洲国产成人久久综合一| 久久久老熟女一区二区三区| 久久久久18| 精品久久久久久国产牛牛app| 国产精品美女久久久m| 18岁日韩内射颜射午夜久久成人| 精品久久久无码中文字幕天天| 国产精品久久国产精麻豆99网站| 一本色道久久综合亚洲精品| 久久久久久免费视频| 久久久这里有精品中文字幕| 国产亚洲精午夜久久久久久| 久久国产精品成人免费| 精品亚洲综合久久中文字幕| 久久丫精品国产亚洲av| 久久婷婷激情综合色综合俺也去| 亚洲欧洲日产国码无码久久99| 久久人人爽人人爽人人片av麻烦 | 久久久久无码中| 久久伊人影视| 久久亚洲精品成人无码网站|