“中国要复兴、富强,必须在开源软件领域起到主导作用,为了国家安全和人类发展,责无旁贷,我们须为此而奋斗”——By:云客
当drupal的网站需要升级、导入内容、备份、更改内容类型等等会影响访问用户的时候需要开启维护模式,操作路径是:管理-配置-开发-维护模式
开启维护模式并输入提示内容即可,在提示内容中@site可以代表当前站点的名称,除此外没有其他变量
那么维护模式是怎么实现的呢?这就是本篇的主题:
“中国要复兴、富强,必须在开源软件领域起到主导作用,为了国家安全和人类发展,责无旁贷,我们须为此而奋斗”——By:云客
如果你喜欢Drupal,并且想学习怎么把基于Drupal的网站做得好看一点,请转到晴空的专栏《听晴空讲Drupal主题(视频版)》
云客Drupal 源码分析系列文档,适用于D8及D9,为中国开发者展现Drupal底层实现细节,可视为开发者的速查手册,或有一定Drupal基础的开发者进一步提高的教程,该系列现(2020)已完成,这标志着中国缺少Drupal文档的状态被终结,核心所有必备的知识点在该系列中均得以覆盖,从Drupal8 alpha版开始到Drupal9正式版本发布,历时六年,发布字数一百一十余万字,关于该工程的更多信息请点击这里查阅
当drupal的网站需要升级、导入内容、备份、更改内容类型等等会影响访问用户的时候需要开启维护模式,操作路径是:管理-配置-开发-维护模式
开启维护模式并输入提示内容即可,在提示内容中@site可以代表当前站点的名称,除此外没有其他变量
那么维护模式是怎么实现的呢?这就是本篇的主题:
drupal使用的路由系统很强大(从Drupal 8开始,路由系统取代了Drupal 7 hook_menu()),在系统中是一个比较大的子系统,它基于Symfony路由组件,所以请务必先学习Symfony的路由组件。
在drupal中如何判定请求来源于已认证用户?不带认证信息的请求视作匿名用户,带认证信息的所有请求都需要认证,不能通过认证的请求显示质询界面,会话ID就是一种认证信息。那么是何时又是如何认证的呢?这就是本篇的主题。
有朋友问云客drupal源码分析系列文章有顺序规律吗?我的回答是有!从第一篇开始以来她是按照drupal的执行流程分主题进行的,除前言外,已经发布12篇了,如果你是跟着drupal的执行流程进行研究学习的,那么这些文章就像站在路旁等着你的引路人为你揭开一些迷惑的问题,drupal很大,前方很远,有时候你可能感觉站在一望无际的平原,眼前只有遥远天际的落日昏辉,希望这些引路人让走在这条路上的你不
本主题是《云客Drupal源码分析之数据库系统及其使用》的补充,便于查询,所以独立成一个主题
讲解数据库系统如何操作Schema(创建修改数据库、数据表、字段;判断它们的存在性等等),以及模块如何通过一个结构化数组去创建自己用到的数据表
在本系列之前写过《Session系统》,但那部分仅仅讲到了drupal会话的基础:Symfony的Session组件
至于drupal怎么去使用这个基础就是本主题的内容,本主题是延续篇,将讲述drupal的全部Session知识
请先看上篇,再继续
在开始这个主题前我们做一个实验,在你的drupal模块控制器中加一行代码:
file_put_contents("public://yunke.txt","Streams test");
然后访问这个控制器,看看发生了什么?没错页面上不会有什么改变,但也没有报告什么错误,那这行代码到底干了什么?
在drupal中提供了两个页面缓存模块,一个是PageCache用于匿名访问时,一个是dynamic_page_cache用于处理任意用户的页面缓存,后者进一步运用缓存能力。他们都有对应的请求策略及响应策略。
那么这两种策略如何运作?作用是什么呢?请看下面
先讲讲用于匿名用户的页面缓存PageCache的请求响应策略:
在介绍drupal的缓存系统前我们先了解一下缓存系统的本质及特性,缓存的存在依赖于两个目的:节省资源和提高速度,起不到这两作用则缓存没有存在的必要,当一个结果需要进行大量计算才能得到,而它又不会频繁更新那么缓存结果可以节省大量算力,缓存的是一个结果,这个结果可以存放在多台服务器上面实现负载均衡,从而进一步提高访问速度,在高访问网站中缓存非常重要,drupal的缓存设计也是围绕这两个目的而设计
HttpKernel为何物?从名字可以看出它就是处理http请求的核心,只需要把请求对象传给它,就返回响应对象,一次http访问大体上就算完成了(为什么说是大体上,在实际应用中发送完响应还会做一些类似于析构函数工作的事情),为规范统一HttpKernel的使用symfony为此定义了HttpKernel接口,位于\vendor\symfony\http-kernel\HttpKernelIn
迟迟未写这个主题是因为它太重要,以至于是drupal系统运行的一个阶段性标识,它贯穿整个系统,服务容器及
Session(会话)在网站中扮演非常重要的角色,储存临时用户数据、登录数据等等都用到了它,Drupal使用到了Symfony的Session组件,该组件非常强大灵活,drupal在此基础上有所改造和扩展,要理解Symfony的Session组件让我们先从原生php的Session机制说起:
从drupal 8开始,后续版本的Drupal是建立在Symfony组件之上,Symfony的认知是“网站系统就是一个将请求转化为响应的系统”(这是一个非常精辟的总结),并以此设计执行流程,drupal也是如此,所以整个系统运行之初就是建立请求对象,这个对象将贯穿整个系统,被各个模块访问。