介绍(Introduction) 入门(Getting Started) 应用结构(Application Structure) 请求处理(Handling Requests) 关键概念(Key Concepts) 配合数据库工作(Working with Databases) 接收用户数据(Getting Data from Users) 显示数据(Displaying Data) 安全(Security) 缓存(Caching) RESTful Web 服务 开发工具(Development Tools) 测试(Testing) 高级专题(Special Topics) 小部件(Widgets) 助手类(Helpers)

启动引导(Bootstrapping)

启动引导是指:在应用开始解析并处理新接受请求之前,一个预先准备环境的过程。 启动引导会在两个地方具体进行:入口脚本(Entry Script)应用主体(application)

入口脚本里,需注册各个类库的类文件自动加载器(Class Autoloader,简称自动加载器)。 这主要包括通过其 autoload.php 文件加载的Composer 自动加载器,以及通过 Yii 类加载的 Yii 自动加载器。之后, 入口脚本会加载应用的配置(configuration)并创建一个 应用主体 的实例。

在应用主体的构造函数中,会执行以下引导工作:

  1. 调用 yii\base\Application::preInit()(预初始化)方法,配置一些高优先级的应用属性, 比如 yii\base\Application::basePath 属性。
  2. 注册yii\base\Application::errorHandler。
  3. 通过给定的应用配置初始化应用的各属性。
  4. 通过调用 yii\base\Application::init()(初始化)方法,它会顺次调用 yii\base\Application::bootstrap() 从而运行引导组件。

因为引导工作必须在处理每一次请求之前都进行一遍, 因此让该过程尽可能轻量化就异常重要,请尽可能地优化这一步骤。

请尽量不要注册太多引导组件。只有他需要在 HTTP 请求处理的全部生命周期中都作用时才需要使用它。 举一个用到它的范例:一个模块需要注册额外的 URL 解析规则,就应该把它列在应用的 bootstrap 属性之中, 这样该 URL 解析规则才能在解析请求之前生效。 (译注:换言之,为了性能需要,除了 URL 解析等少量操作之外,绝大多数组件都应该按需加载,而不是都放在引导过程中。)

在生产环境中,可以开启字节码缓存,比如 APC, 来进一步最小化加载和解析 PHP 文件所需的时间。

一些大型应用都包含有非常复杂的应用配置, 它们会被分割到许多更小的配置文件中。 此时,可以考虑将整个配置数组缓存起来, 并在入口脚本创建应用实例之前直接从缓存中加载。

在线
530