引導(Bootstrapping)

2018-02-24 15:40 更新

啟動引導(Bootstrapping)

啟動引導是指:在應用開始解析并處理新接受請求之前,一個預先準備環(huán)境的過程。啟動引導會在兩個地方具體進行:入口腳本(Entry Script)?和?應用主體(application)。

入口腳本里,需注冊各個類庫的類文件自動加載器(Class Autoloader,簡稱自動加載器)。這主要包括通過其?autoload.php?文件加載的 Composer 自動加載器,以及通過?Yii?類加載的 Yii 自動加載器。之后,入口腳本會加載應用的?配置(configuration)?并創(chuàng)建一個?應用主體?的實例。

在應用主體的構造函數(shù)中,會執(zhí)行以下引導工作:

  1. 調用 yii\base\Application::preInit()(預初始化)方法,配置一些高優(yōu)先級的應用屬性,比如 yii\base\Application::basePath 屬性。
  2. 注冊yii\base\Application::errorHandler。
  3. 通過給定的應用配置初始化應用的各屬性。
  4. 通過調用 yii\base\Application::init()(初始化)方法,它會順次調用 yii\base\Application::bootstrap() 從而運行引導組件。

因為引導工作必須在處理每一次請求之前都進行一遍,因此讓該過程盡可能輕量化就異常重要,請盡可能地優(yōu)化這一步驟。

請盡量不要注冊太多引導組件。只有他需要在 HTTP 請求處理的全部生命周期中都作用時才需要使用它。舉一個用到它的范例:一個模塊需要注冊額外的 URL 解析規(guī)則,就應該把它列在應用的?bootstrap 屬性之中,這樣該 URL 解析規(guī)則才能在解析請求之前生效。(譯注:換言之,為了性能需要,除了 URL 解析等少量操作之外,絕大多數(shù)組件都應該按需加載,而不是都放在引導過程中。)

在生產環(huán)境中,可以開啟字節(jié)碼緩存,比如 APC,來進一步最小化加載和解析 PHP 文件所需的時間。

一些大型應用都包含有非常復雜的應用配置,它們會被分割到許多更小的配置文件中。此時,可以考慮將整個配置數(shù)組緩存起來,并在入口腳本創(chuàng)建應用實例之前直接從緩存中加載。

以上內容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號