drupal启动过程
生活随笔
收集整理的這篇文章主要介紹了
drupal启动过程
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
2019獨角獸企業重金招聘Python工程師標準>>>
switch?($current_phase)?{case?DRUPAL_BOOTSTRAP_CONFIGURATION:_drupal_bootstrap_configuration();break;初始化配置
? 2.設置頁面緩存并試圖找到當前頁面是否已經被緩存
require_once?DRUPAL_ROOT?.?'/includes/cache.inc';#判斷drupal緩存機制是否被更改,例如換成memcache或者redis或者其他#memcache模塊設置有#$conf['cache_backends'][]?=?'sites/all/modules/memcache/memcache.inc';#$conf['cache_default_class']?=?'MemCacheDrupal';#設置form表單用的緩存在第三方緩存不存在時依舊可以使用,所以需要將form表單的緩存交給數據庫#$conf['cache_class_cache_form']?=?'DrupalDatabaseCache';#如果設置使用了第三方緩存必須要設置$conf['page_cache_without_database']這個為true才能使用第三方緩存#跳過使用mysql數據庫,另外$conf['page_cache_invoke_hooks']設為false表示不再使用鉤子hook_boot,#hook_exit否則會報錯因為后面會用到module_list這個時候找不到這個方法。#$conf['page_cache_without_database']?=?TRUE;#$conf['page_cache_invoke_hooks']?=?FALSE;foreach?(variable_get('cache_backends',?array())?as?$include)?{require_once?DRUPAL_ROOT?.?'/'?.?$include;}//?Check?for?a?cache?mode?force?from?settings.php.if?(variable_get('page_cache_without_database'))?{$cache_enabled?=?TRUE;}else?{drupal_bootstrap(DRUPAL_BOOTSTRAP_VARIABLES,?FALSE);$cache_enabled?=?variable_get('cache');}#判斷用戶ip是否已經被禁止drupal_block_denied(ip_address());#判斷是否登錄?如果是游客則讀取頁面緩存if?(!isset($_COOKIE[session_name()])?&&?$cache_enabled)?{ case?DRUPAL_BOOTSTRAP_DATABASE:_drupal_bootstrap_database();break;3.初始化數據庫以及自動加載所需要的類
4.加載系統變量和所有開啟的模塊
global?$conf; #初始化鎖系統 require_once?DRUPAL_ROOT?.?'/'?.?variable_get('lock_inc',?'includes/lock.inc'); lock_initialize(); #加載數據庫中的變量并不覆蓋settings.php文件里變量的覆蓋 $conf?=?variable_initialize(isset($conf)???$conf?:?array()); #加載?bootstrap?模塊.?在表system中bootstrap?等于?1的。 #目前自己裝的項目只有dblog,overlay,devel?3個模塊 require_once?DRUPAL_ROOT?.?'/includes/module.inc'; module_load_all(TRUE); case?DRUPAL_BOOTSTRAP_SESSION:require_once?DRUPAL_ROOT?.?'/'?.?variable_get('session_inc',?'includes/session.inc');drupal_session_initialize();break;5.初始化session,開啟session
#設置自己的session處理機制 session_set_save_handler('_drupal_session_open',?'_drupal_session_close',?'_drupal_session_read',?'_drupal_session_write',?'_drupal_session_destroy',?'_drupal_session_garbage_collection'); $GLOBALS['lazy_session']?=?TRUE; $user?=?drupal_anonymous_user(); #游客用session_id(drupal_random_key());生成session_id?如果針對登錄用戶則用 #drupal_session_regenerate()生成session_id前者比后者效率高,但安全性略差。 #如果是https協議即使是游客也開啟cookie session_id(drupal_random_key()); if?($is_https?&&?variable_get('https',?FALSE))?{$insecure_session_name?=?substr(session_name(),?1);$session_id?=?drupal_random_key();$_COOKIE[$insecure_session_name]?=?$session_id; } case?DRUPAL_BOOTSTRAP_PAGE_HEADER:_drupal_bootstrap_page_header();break;6.引入鉤子hook_boot 及輸出頭部
?case?DRUPAL_BOOTSTRAP_LANGUAGE:drupal_language_initialize();break;7.初始化多語言加載鉤子bootstrap_invoke_all('language_init');
case?DRUPAL_BOOTSTRAP_FULL:require_once?DRUPAL_ROOT?.?'/includes/common.inc';_drupal_bootstrap_full();break;8.完整初始化?
? 引入路徑(path)文件,引入模板(theme)文件,引入分頁(pager)文件,引入菜單(menu)文件,引入分頁(pager)文件等引入鉤子module_invoke_all('init');
hook_init鉤子主要用于模塊引入自己的css文件
function?system_init()?{$path?=?drupal_get_path('module',?'system');//?Add?the?CSS?for?this?module.?These?aren't?in?system.info,?because?they//?need?to?be?in?the?CSS_SYSTEM?group?rather?than?the?CSS_DEFAULT?group.drupal_add_css($path?.?'/system.base.css',?array('group'?=>?CSS_SYSTEM,?'every_page'?=>?TRUE));轉載于:https://my.oschina.net/u/1176727/blog/306902
總結
以上是生活随笔為你收集整理的drupal启动过程的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Xiaomi Book Air 13 翻
- 下一篇: 国产威武 2022全球新能源车销售排名