<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ThinkChat2.0新版上線,更智能更精彩,支持會話、畫圖、視頻、閱讀、搜索等,送10W Token,即刻開啟你的AI之旅 廣告
                # 生命周期 前面[關于 Blink](https://github.com/bixuehujin/blink/blob/master/docs/zh-CN/1-1-about-blink.md)部分有過介紹,Blink 不像其他運行在 php-fpm 或者 mod_php 之上的傳統 PHP 框架,它的生命周期 也是很不相同的,在使用 Blink 進行應用開發時,我們需要時刻牢記這一點,以減少不必要的困惑。 在 php-fpm 或者 mod_php 中,幾乎所有的資源(諸如像對象、數據庫鏈接等)都僅僅存在于一個請求之間,所有的這些資源都會在請求結束時釋放。這樣的 工作機制對于小規模的應用是沒什么問題的,但對于大規模的應用,其所帶來的性能開銷是不可忽視的。這也是為什么 Blink 存在的原因,在 Blink 中, 我們盡最大努力減少資源的重復申請與釋放,獲得盡可能高的性能。 為此,Blink 的生命周期會比 php-fpm 或者 mod_php 之類更加復雜,我們在開發 Blink 應用的時候也需要謹慎的處理資源的申請與釋放。一個 Blink 應用的有三個階段,啟動階段、請求處理階段和退出階段,下面就每個階段進行詳細介紹: ## 啟動階段 首先,Blink 采用子進程來處理用戶請求,每個子進程包含一個 Blink 應用程序(也就是一個 Blink Application 實例),每個應用會隨著子進程的創建 而創建。 一旦 Blink 應用創建好后,`$application->bootstrap()`?方法將會被調用,啟動應用,在這個方法中主要會做以下幾件事情: 1. 設置應用的配置信息,比如默認時區 2. 注冊應用服務,如日志、errorHandler等 3. 注冊路由 一旦應用啟動成功,他就會等待并處理服務器發送過來的請求。 ## 請求處理 應用啟動之后,就會開始等待處理請求,當有請求到來的時候,`$application->handleRequest()`?將會被調用來處理這個請求,下面是一個請求處理的 過程: 1. 路由分發,通過預先定義好的路由找到對應的控制器 2. 創建對應控制器實例 3. 調用注冊好的 Request 中間件 4. 執行控制器對應的 Action 5. 調用注冊好的 Response 中間件 6. 結束請求并把數據返回給服務器 與 php-fpm 或 mod_php 相比,Blink 很重要的不同就是一個應用同時處理多個請求。在這多個請求之間,Application 對象及其注冊在其之上的服務 都是一直存在并且能夠很好的復用,盡量減少了不必要的重新申請資源的開銷。也正是因為這個原因,Blink 比 php-fpm 或 mod_php 的性能要高許多。 ## 退出階段 當一個應用(或者子進程)達到了?`maxRequests`?最大處理請求數量的限制或者接收到?`TERM`?信號時,該應用就會自動退出,對應進程內部的所有資源和 數據庫鏈接都會被釋放。
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看