全方位深度剖析PHP7底层源码
由浅入深 让你彻底掌握PHP7源码设计
本课程将带你深入剖析PHP7源码,掌握PHP7源码背后的原理,内核机制、核心技术点、PHP扩展及架构设计思想等,提高你的源码阅读和分析能力,提升你的编程技能和代码设计能力,让你快速突破技术瓶颈,解决性能调优和高并发问题。
适合人群
课程适合使用PHP两年以上人群,尤其适合
想研究PHP7源码/对PHP语言本身有强烈兴趣的
想了解源码 甚至参与PHP语言开发的
工作中遇到技术瓶颈,需要进一步提高自己的技术能力的开发者
技术储备要求
熟悉PHP语言 有一定C语言基础
[wm_tips]试看链接:https://pan.baidu.com/s/1qQlPJ1-egOmx0Bokg56nzA
提取码:ye4v [/wm_tips]
章节目录:
-
第1章 课程介绍 试看1 节 | 7分钟
本章主要介绍课程要讲的知识点,以及课程要求等。
- 视频:1-1 【欢迎在问答区和QQ群与老师互动,祝您学习愉快】课程整体介绍(了解课程整体内容,方能更好学习) (06:46)试看
-
第2章 PHP7的新特性 试看6 节 | 44分钟
本章主要介绍PHP7的新特性,做基准测试,与PHP5对比验证PHP7的性能提升程度,引出对PHP7源码学习的必要性。
- 视频:2-1 带你编译和安装PHP7 (14:14)
- 视频:2-2 如何要对PHP7与PHP5进行性能对比(没有对比,就没有差距) (12:11)试看
- 视频:2-3 PHP7有哪些新特性 (03:56)
- 视频:2-4 PHP7还有其它新特性 (09:19)
- 视频:2-5 再次认识PHP7的所有特性 (03:55)
- 图文:2-6 练习题:加深对PHP新特性的理解
-
第3章 基本变量与内存管理机制 试看17 节 | 178分钟
本章主要讲解C语言中结构体和联合体的区别、宏定义、具体讲zval与字符串的实现 并以字符串为例,演示写时复制,讲内存回收的方案,使用GDB展示内存的使用情况等。
- 视频:3-1 什么是小而巧的zval (08:42)
- 视频:3-2 不同变量对应的zval实战 (15:51)
- 视频:3-3 Zend_string与写时复制实战 (11:59)
- 视频:3-4 带你实战引用类型的使用 (09:37)
- 视频:3-5 什么是PHP7源码中的数组 (07:06)
- 视频:3-6 带你实战数组的增删改查 (14:40)
- 视频:3-7 继续实战数组的增删改查(彻底知道数组的底层实现逻辑) (15:11)
- 视频:3-8 再次总结基本变量 (05:20)
- 视频:3-9 内存管理基础知识 (07:12)
- 视频:3-10 什么是真正的内存分配过程 (04:21)
- 视频:3-11 什么是Small内存的管理 (17:31)
- 视频:3-12 带你实战Small内存管理 (13:21)试看
- 视频:3-13 Chunk的内存对齐 (07:28)
- 视频:3-14 认识真实的Small和Large内存的标记 (12:09)
- 视频:3-15 内存标记和内存释放时大小的判断 (18:24)
- 视频:3-16 总结内存管理 (08:14)
- 图文:3-17 练习题:内存管理的机制
-
第4章 PHP运行的生命周期18 节 | 130分钟
本章主要介绍使用GDB展示PHP代码的执行过过程,按阶段讲解使用cli模式讲解、PHP7的生命周期以及fpm的生命周期,包括fastcgi协议等。
- 视频:4-1 章介绍 (02:18)
- 视频:4-2 什么是CLI模式 (05:20)
- 视频:4-3 实战CLI模式的生命周期 (11:41)
- 视频:4-4 认识模块初始化部分函数调用图 (04:57)
- 视频:4-5 详解php_module_startup阶段 (17:54)
- 视频:4-6 详解php_request_startup (07:55)
- 视频:4-7 详解执行和管理阶段 (04:56)
- 视频:4-8 何为FPM的三种模式 (08:40)
- 视频:4-9 网络编程的基础知识 (02:11)
- 视频:4-10 网络编程实战1 (04:22)
- 视频:4-11 信号处理实战 (07:34)
- 视频:4-12 FPM的生命周期 (05:06)
- 视频:4-13 实战:使用GDB调试FPM (10:12)
- 视频:4-14 FastCGI协议理论讲解 (07:39)
- 视频:4-15 FastCGI协议实战 (11:58)
- 视频:4-16 继续 FastCGI协议实战 (12:10)
- 视频:4-17 小章总结 (04:29)
- 图文:4-18 练习题:PHP7运行的生命周期
-
第5章 PHP代码的解析与执行14 节 | 118分钟
本章主要介绍编译器,以及源程序的分析过程,具体讲解Lex/YACC、Re2c/Bison词法和语法分析器以及讲解词法语法分析用到的数据结构等。
- 视频:5-1 解释型语言也需要编译吗 (05:39)
- 视频:5-2 NFA和DFA (06:43)
- 视频:5-3 实战:使用re2c做词法分析 (08:50)
- 视频:5-4 语法分析入门与巴科斯范式 (03:33)
- 视频:5-5 实战:使用bison做语法分析 (07:06)
- 视频:5-6 PHP7的词法和语法分析 (10:25)
- 视频:5-7 实战:PHP7词法分析过程 (14:13)
- 视频:5-8 实战:PHP7语法分析的过程 (16:37)
- 视频:5-9 AST编译成指令集 (07:09)
- 视频:5-10 实战:AST编译成opcode的过程 (18:22)
- 视频:5-11 Zend虚拟机的基础 (06:06)
- 视频:5-12 实战:Zend虚拟机的执行 (07:08)
- 视频:5-13 总结并回顾 (05:42)
- 图文:5-14 练习题:深入理解PHP代码的解析与执行
-
第6章 基本语法实现的细节和原理12 节 | 182分钟
本章主要介绍条件判断语法实现、循环语法实现、中断与跳转、文件的引入、异常和错误的处理以及实战体验include和reuqire的区别。
- 视频:6-1 break语法的AST、栈、符号表和指令集 (19:14)
- 视频:6-2 break命令执行过程 (15:13)
- 视频:6-3 include语法的AST、栈、符号表和常量 (14:03)
- 视频:6-4 include 语法的执行 (18:55)
- 视频:6-5 条件判断语法的AST (16:53)
- 视频:6-6 条件语句的栈、符号表、常量和指令集 (12:38)
- 视频:6-7 条件语法的执行过程 (14:19)
- 视频:6-8 foreach的AST、栈、符号表和常量数组 (16:53)
- 视频:6-9 foreach指令集 (03:57)
- 视频:6-10 foreach语法的执行过程 (21:21)
- 视频:6-11 异常处理的AST、栈、符号表、常量和指令集 (19:04)
- 视频:6-12 异常处理的执行过程 (09:13)
-
第7章 编写一个PHP扩展7 节 | 93分钟
本章讲解编写和编译扩展的基本流程,了解了PHP执行的原理,对于固化的逻辑,可以通过编写扩展来提高性能以及编写一个扩展。
- 视频:7-1 编写一个简单的扩展 (17:38)
- 视频:7-2 实战:扩展的具体分析 (18:17)
- 视频:7-3 一个简单的日志扩展 (07:48)
- 视频:7-4 SeasLog扩展分析(一) (15:42)
- 视频:7-5 SeasLog扩展分析(二) (11:47)
- 视频:7-6 内部函数sort分析 (12:30)
- 视频:7-7 内部扩展date (08:26)