引导指令流程

老葛的Drupal培训班 http://www.thinkindrupal.com

引导指令流程
    对于每个请求,Drupal引导指令本身都会经历一系列的引导指令阶段。这些阶段定义在bootstrap.inc中,在接下来的部分中,我们将会为你描述处理流程。
 
初始配置
     在这一阶段,将会填充Drupal的内部配置数组,并建立站点的基URL($base_url)。通过include_once()来解析settings.php文件,任何已被覆写的变量或者字符串都可被应用了。详情请参看sites/all/default/default.settings.php文件中的“变量覆写”和“字符串覆写”部分。
 
前期页面缓存
    在有些情况下,可能会需要更高水平的性能,甚至在建立数据库连接之前,可能就需要要调用缓存系统了。前期页面缓存阶段,会让你(使用include())包含一个PHP文件,里面带有一个名为page_cache_fastpath()的函数,该函数接收内容并将其返回给浏览器。通过将page_cache_fastpath变量设置为TRUE,就可以启用早期页面缓存阶段了,而包含进来的文件则通过将cache_inc变量设置为文件的路径来定义。具体示例可参看缓存一章。
 
初始化数据库
    在数据库阶段期间,将决定数据库的类型,将建立初始化链接以供数据库查询使用。
 
基于主机名/ID地址进行访问控制
    Drupal支持基于主机名/ IP地址来禁止主机(对站点的访问)。在访问控制阶段,会快速的检查请求是否来自一个被禁的主机;如果是,那么将拒绝访问。
 
初始化会话处理
    Drupal利用了PHP内置的会话处理,但是它使用自己的基于数据库的会话处理器,覆写了PHP的一些处理器。在会话阶段,将初始化或者重新构建会话。代表当前用户的全局对象$User也会在这一阶段初始化,不过出去效率的原因,并不是对象的所有属性都是可用的(当需要时,可以通过明确的调用函数user_load()来加载这些属性)。
 
后期页面缓存
    在后期页面缓存阶段,Drupal会加载足够的支持代码,来决定是否需要从页面缓存中提供一个页面。这包括,把来自于数据库的设置合并到在初始化配置阶段创建的数组中,并且加载或者解析模块代码。如果在会话中显示请求来自于匿名用户,并启用了页面缓存,那么将从缓存中返回页面,执行将在此停止。
 
语言判定
    在语言判定阶段,将会初始化Drupal的多语言支持,并基于站点和用户的设置,来决定为当前页面使用哪一个语言。Drupal支持多种方式来判定语言,比如路径前缀和域名层的语言判断。
 
路径

     在路径阶段,将加载处理路径和路径别名的代码。该阶段使得用户可读的URL被转化为Drupal路径,并处理Drupal内部路径的缓存和查找操作。

Drupal版本: