前言
最近学习了php7源码,通过学习也知道了php是如何运转的,以及内部是什么样的,现在整理成博客方便自己和有需要的人查看。
php7为什么这么快
1:全新的zval 更节约的空间,栈上分配内存
2:zend_string 存储字符串的Hash值,数组查询的时候不需要进行Hash计算
3:在HashTable桶内直接存数据,减少了内存的申请次数,提升了cache命中率和内存访问速度
4:zend_parse_parameters改为了宏实现,性能提升5%
5:增加opcode指令 call_user_function,is_init/string/array,strlen,defined函数变成opcode指令,速度更快
排序算法的改进
php框架
Zend 引擎:Zend引擎为PHP提供了基础服务,包括词法分析 语法分析 ,AST抽象语法树编译 opcodes执行,PHP的变量设计、内存管理、进程管理。
PHP层:绑定了SAPI层并处理与它的通信,它同时对safe_mode和open_basedir的检测提供一致的控制层,将fopen()、fread()和fwrite()等用户空间的函数与文件和网络I/O联系起来。
SAPI:包括了cli fpm等,把接口对外接口都抽象出来,只要遵守SAPI协议便可以实现一个server。
拓展:zend 引擎提供了核心能力和接口规范,在此基础上可以开发拓展
学习大纲
php7的安装
php7新增加的语法特性
php7内核之zval
php7 zend_string与写时复制
php7引用类型的实现
php数组实现的原理
php7内存管理
php运行的生命周期
php代码的编译与执行
php基本语法实现的原理
如何编写一个php扩展
写在结尾的话
如果我的文章有帮助到你,麻烦点个赞
如果我的文章哪里有误,麻烦指出来
共同学习,一起进步!
参考
- 《PHP7 底层设计与源码实现》 陈雷