Drupal整个启动过程共分为8个阶段:
- DRUPAL_BOOTSTRAP_CONFIGURATION:initialize configuration
- DRUPAL_BOOTSTRAP_PAGE_CACHE:try to serve a cached page
- DRUPAL_BOOTSTRAP_DATABASE:initialize database layer
- DRUPAL_BOOTSTRAP_VARIABLES:initialize the variable system
- DRUPAL_BOOTSTRAP_SESSION:initialize session handling
- DRUPAL_BOOTSTRAP_PAGE_HEADER:set up the page header
- DRUPAL_BOOTSTRAP_LANGUAGE:find out language of the page
- DRUPAL_BOOTSTRAP_FULL:Drupal is fully loaded; validate and fix input data
根据不同的目的,可以控制Drupal启动到不同的阶段。例如,index.php就需要Drupal完全启动:
<?php define('DRUPAL_ROOT', getcwd()); require_once DRUPAL_ROOT . '/includes/bootstrap.inc'; drupal_bootstrap(DRUPAL_BOOTSTRAP_FULL); // 完全启动后再执行菜单请求处理 menu_execute_active_handler();
我有一个demo.php文件,用来测试Drupal数据库API,因此只需要数据库启动完成就可以了,后面的不需要执行:
<?php define('DRUPAL_ROOT', getcwd()); require_once DRUPAL_ROOT . '/includes/bootstrap.inc'; drupal_bootstrap(DRUPAL_BOOTSTRAP_DATABASE); // 到这里就可以使用数据库API了 $result = db_query('SELECT nid, title FROM node');