11. 数据库系统及其使用 Symfony没有数据库组件,drupal完全自己实现了一个基于php的pdo扩展的数据库系统,它提供了一个数据库抽象层,让你可以使用统一的方式去操作数据库,而不用管底层使用的是什么数据库,只需要使用好它提供的接口(对象方法或函数)就行,当需要更换另外类型的数据库时,比如由MySQL换成Oracle或MS SQL Server,无需修改应用层代码
10. Session进阶 在本系列之前写过《Session系统》,但那部分仅仅讲到了drupal会话的基础:Symfony的Session组件 至于drupal怎么去使用这个基础就是本主题的内容,本主题是延续篇,将讲述drupal的全部Session知识 请先看上篇,再继续
9. php流Streams、公共文件、私有文件 在开始这个主题前我们做一个实验,在你的drupal模块控制器中加一行代码: file_put_contents("public://yunke.txt","Streams test"); 然后访问这个控制器,看看发生了什么?没错页面上不会有什么改变,但也没有报告什么错误,那这行代码到底干了什么?
8. 页面缓存PageCache的请求策略RequestPolicy及响应策略ResponsePolicy 在drupal中提供了两个页面缓存模块,一个是PageCache用于匿名访问时,一个是dynamic_page_cache用于处理任意用户的页面缓存,后者进一步运用缓存能力。他们都有对应的请求策略及响应策略。 那么这两种策略如何运作?作用是什么呢?请看下面 先讲讲用于匿名用户的页面缓存PageCache的请求响应策略:
7. 缓存系统Cache 在介绍drupal的缓存系统前我们先了解一下缓存系统的本质及特性,缓存的存在依赖于两个目的:节省资源和提高速度,起不到这两作用则缓存没有存在的必要,当一个结果需要进行大量计算才能得到,而它又不会频繁更新那么缓存结果可以节省大量算力,缓存的是一个结果,这个结果可以存放在多台服务器上面实现负载均衡,从而进一步提高访问速度,在高访问网站中缓存非常重要,drupal的缓存设计也是围绕这两个目的而设计
6. HttpKernel堆栈 HttpKernel为何物?从名字可以看出它就是处理http请求的核心,只需要把请求对象传给它,就返回响应对象,一次http访问大体上就算完成了(为什么说是大体上,在实际应用中发送完响应还会做一些类似于析构函数工作的事情),为规范统一HttpKernel的使用symfony为此定义了HttpKernel接口,位于\vendor\symfony\http-kernel\HttpKernelIn
4. Session会话系统 Session(会话)在网站中扮演非常重要的角色,储存临时用户数据、登录数据等等都用到了它,Drupal使用到了Symfony的Session组件,该组件非常强大灵活,drupal在此基础上有所改造和扩展,要理解Symfony的Session组件让我们先从原生php的Session机制说起:
2. 请求对象Request及请求堆栈 从drupal 8开始,后续版本的Drupal是建立在Symfony组件之上,Symfony的认知是“网站系统就是一个将请求转化为响应的系统”(这是一个非常精辟的总结),并以此设计执行流程,drupal也是如此,所以整个系统运行之初就是建立请求对象,这个对象将贯穿整个系统,被各个模块访问。