Drupal 6.19 运行流程(从上到下依次执行)
第一步
require_once './includes/bootstrap.inc';
drupal_bootstrap(DRUPAL_BOOTSTRAP_FULL);
设置解开层数DRUPAL_BOOTSTRAP_FULL,用drupal bootstrap的while循环逐层解开
第一层:初始化
1、 drupal_unset_globals() 清除除定义内(如$_GET)之外的所有全局变量
2、 timer_start('page'):初始化页面开始执行的时间戳
3、 conf_init():阻挡不正常$_SERVER环境访问;加载数据库配置数据;生成$base_url、$base_root、$base_path变量;生成$session_name,$cookie_domain变量
第二层:加载cache.inc定义函数
1、require_once variable_get('cache_inc', './includes/cache.inc')
第三层:数据库加载准备
1、 require_once './includes/database.inc';
2、 db_set_active():$db_url为空则跳转到安装地址,根据指定的数据库类型加载相关的数据库操作函数库并连接数据库
3、 lock_init():初始化$locks=array(); // like those using APC or memcached
4、
第四层:禁止IP
阻止被屏蔽IP的用户访问
第五层:session准备
session_set_save_handler('sess_open', 'sess_close', 'sess_read', 'sess_write', 'sess_destroy_sid', 'sess_gc'); 改变session的存储位置到数据库中,启动session
第六层:获取页面缓存数据
1、 获取所有variable_get数据
2、 判断是否开启了页面缓存设置。A) 如果开启了:则获取页面缓存,输出(Header指定不浏览器缓存数据),然后执行module定义的exit函数并结束页面的往下执行动作,此时页面运行结束;如果没有页面缓存则继续往下执行。B) 如果没有开启,则执行所有boot接口,进入下一步;
第七层:初始化语言包
drupal_init_language();加载语言(个人设置,全局设置语言的判断加载)
第八层:分析$_GET[‘q’]路径
根据$_GET[‘q’]找到真实路径并更新$_GET[‘q’]真实值
第九层:加载公共函数和文件,载入所有开启的module文件
require_once './includes/common.inc';
require_once './includes/theme.inc';
require_once './includes/pager.inc';
require_once './includes/menu.inc';
require_once './includes/tablesort.inc';
require_once './includes/file.inc';
require_once './includes/unicode.inc';
require_once './includes/image.inc';
require_once './includes/form.inc';
require_once './includes/mail.inc';
require_once './includes/actions.inc';
set_error_handler('drupal_error_handler');
drupal_set_header('Content-Type: text/html; charset=utf-8');
载入所有Module文件
第二步
判断是否网站处理关闭状态
分析第八层更新过的$_GET[‘q’]变量并判断权限后执行。如果路径错误或者没有权限,则返回错误提示;如果正常则调用执行相关的调用数据函数获取原始数据并找到对应模板进行整合(这一步详细流程图如下)
第三步
判断是否开启页面缓存,如果开启了则把该页面数据打包存储在cache表中,给下次浏览该页面时提供页面缓存数据。
最后执行所有exit()函数
结束
搭建Drupal的过程中,需要注意哪些地方可以降低运行的时间?
a:因为模组是每次浏览都需要加载,所以模组尽可能少,文件不要划分太多个
b:如果有复杂的sql查询语句,最好把结果进行数据缓存
c:开启后台性能中的css,js压缩优化选项
Drupal内核有没有可能一些部分进行适当修改,从而增加drupal的性能?
Drupal的数据总是存储在数据库中,每次运行必然会执行很多数据库操作,影响性能
有些部分可以尝试用文件缓存、内存缓存或者sqllit代替
为何Drupal长时间不运行后首次执行的时间会较大,紧接着再次刷新时间会降低50-60%的时间?(因为没有缓存,应该不存在两次执行的时间差异这么大)
我觉得应该是多花费在打开表的动作时间里。做过几次测试:发现在大多数常用表被打开的情况下每次运行的速度都相差不到多少,过段时间表自己被关闭,打开的表个数为0或很少,这次访问就会速度明显变慢
根据devel测试的结果,主要数据库读取次数非常多的是在得到Node数据后循环逐个获取相关的数据的过程(主要动作是:node_load,drupal_lookup_path,taxonomy_node_get_terms,upload_load,_print_set_node_fields,_print_mail_set_node_fields,cache_get,statistics_get,drupal_lookup_path,templates_preprocess_node)。时间平均占用了总时间的60-80%。权限判断只用到一次操作数据库应该不会太耗性能
分享到:
相关推荐
这个"drupal-6.19.rar"压缩包包含了一个完整的Drupal 6.19安装文件,让你能够快速便捷地在IIS(Internet Information Services)服务器上搭建Drupal站点。 首先,让我们深入了解Drupal 6.19的主要特点和功能。这一...
介绍了apache2.2.14+mysql5.1.3+php5.2.9+phpmyadmin3.7.1+drupal6.19 的全部安装过程
对于初学者,要使用 "drupal-zh.zip",首先需要下载并安装 Drupal 的基础版本,然后将解压后的 "drupal-6.19-zh" 文件夹中的所有内容上传到 Drupal 安装目录的 "sites/all/themes" 或 "sites/default/themes" 目录下...
Drupal 9.0.1是Drupal内容管理系统的一个重要版本,带来了许多新特性和改进,旨在提升网站构建者的体验和网站的性能。Drupal是一款开源的PHP框架,被广泛用于创建复杂、可扩展的Web应用程序和网站。这个9.0.1版本的...
在Drupal中,可以使用模块如Search API来实现高级搜索功能,或是利用 Views 模块创建基于数据的视图,甚至集成外部数据源,实现智能化的数据分析和展示。 6. **数据导入与导出**:Drupal提供了Data Export Import...
Drupal是开源的内容管理系统(CMS),在全球范围内被广泛用于构建各种网站,从个人博客到复杂的商业平台。本资源包包含了三本书籍,可以帮助你深入理解和掌握Drupal7的各个方面: 1. **Drupal7宝典**: 这本书全面...
#### 三、Drupal体系结构分析 - **核心组件**:Drupal的核心由一系列模块和服务组成,它们协同工作来处理请求和生成响应。了解这些核心组件对于进行高效开发至关重要。 - **模块开发**:本书详细介绍了如何编写...
5. **《Drupal源码分析》**:理解Drupal的源码有助于你更好地定制和优化网站。这本书通过深入解析核心代码,揭示了Drupal的工作原理,有助于提升你的问题解决能力。 6. **《Drupal 8 API指南》**:Drupal 8提供了...
2. **Profiler**:性能分析工具,帮助开发者了解页面加载时间。 3. **PHP执行**:允许在后台直接执行PHP代码,方便测试和调试。 4. **日志查看**:查看Drupal的日志信息,便于诊断问题。 总的来说,Drupal 6是一个...
### Drupal 7 与 Drupal 6 版本修改内容 #### 概述 Drupal 是一个开源的内容管理系统(CMS),被广泛用于构建各种类型的网站。从 Drupal 6 升级到 Drupal 7,Drupal 社区引入了大量的改进和新功能,以提高用户体验...
- **站点管理和分析工具**:提供详尽的数据分析,帮助管理者优化网站运营。 - **缓存机制**:通过缓存减少数据库查询,提升站点响应速度,减轻服务器负担。 #### 安装Drupal 为了运行Drupal,服务器需预先搭建好...
Drupal专业开发指南 不用介绍了把,你懂的
Drupal 7 是一个流行的开源内容管理系统,用于构建各种类型的网站。本教程将详细介绍如何在本地环境中安装 Drupal 7,特别是针对使用 Apache2、PHP5 和 MySQL5 的集成环境,如 AppServ。 首先,确保你已经安装了...
Drupal是一款强大的开源内容管理系统,广泛用于构建复杂且功能丰富的网站。"Drupal入门第一步"这个主题主要涵盖以下几个关键知识点: 1. **XAMPP的安装与设置**:XAMPP是一个集成开发环境,包含了Apache服务器、...
- **主题分析**:选取一个典型的Drupal主题进行深入分析,包括其设计思路、实现技术等。 - **代码解读**:逐行解读该主题的关键代码,帮助读者理解其实现细节。 ##### 10. 主题的.info文件 - **文件功能**:介绍....
模块可以实现特定任务,如集成社交媒体、电子商务功能或者数据分析。Drupal的API和钩子系统使模块开发变得相对简单,即便对于非专业开发者来说也是可行的。 五、Drupal主题制作 Drupal的主题定义了网站的外观和布局...
Drupal 是一个广泛使用的开源内容管理框架,用于构建各种类型的网站,从小型个人博客到大型企业级平台。7.23 版本是 Drupal 发展历程中的一个重要里程碑,它提供了丰富的功能和安全性更新。 Drupal 7.23 版本安装...
### Drupal高级开发手册知识点概述 #### 一、Drupal框架简介 - **定义与起源**:Drupal是一款免费开源的内容管理系统(CMS),由Dries Buytaert于2001年创立。该系统基于PHP语言开发,支持MySQL数据库。 - **特点**...
### 关于《Beginning Drupal 7》的知识点梳理 #### 一、书籍基本信息 - **书名**:《Beginning Drupal 7》 - **作者**:Todd Tomlinson - **出版社**:Apress - **出版年份**:2010年 - **ISBN-13(纸质版)**:...