Yii2学习笔记系列20——Handling Requests-Bootstrapping(请求处理之启动引导)

五 27 五月 2016

启动引导

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

入口脚本中,不同的类库的自动类加载器会被注册进来(Class Autoloader,简称自动加载器),其中包括通过autoload.php文件注册的Composer自动加载器和通过Yii类文件注册的Yii自动加载器。之后,入口脚本会加载应用程序的配置并且创建应用主体的实例。

在应用主体的构造函数中会做以下的工作:

  1. 调用preInit() - 预初始化方法,从而配置一些优先级比较高的属性,例如basePath

  2. 注册异常处理器

  3. 通过给定的应用程序配置初始化应用程序属性。

  4. 调用init() - 初始化方法,它会进而顺序调用bootstrap() - 启动引导方法来引导组件。

因为引导工作必须在处理每一次请求之前完成,所以请尽量轻量化该过程,并且尽可能的优化。

尽量不要注册过多的引导组件,只有当一个组件需要在HTTP请求的完整生命周期内都作用时才需要将其注册为引导组件。例如,如果一个模块需要注册其他的URL解析规则,就应该在bootstrap 属性中将其列出,这样儿它才会在解析URL请求之前生效。(译注:换言之,为了性能需要,除了 URL 解析等少量操作之外,绝大多数组件都应该按需加载,而不是都放在引导过程中。)

在生产环境下,可以开启字节码缓存,比如PHP OPcache或者APC,来减少加载和解析PHP文件的耗费时间。

一些大型的应用有着非常复杂的应用程序配置,该配置会被分割成许多小的配置文件,在这种情况下,可以考虑缓存整个配置数组,并在入口脚本创建应用实例之前直接从缓存中加载。

Category: PHP Develop

Comments