:

2019年02月读书《PHP7内核剖析》

发布于:2019-3-13 8:58 作者:song100e 浏览:502 分类:人丑就要多读书

        PHP7 版本最大的特色在于其性能上的突破,比 PHP5 快了一倍。目前 PHP7 已经得到了广泛应用,越来越多的项目从 PHP5 迁移到了 PHP7。目前,关于PHP内核的资料非常有限,本书以当前流行的 PHP7 版本为基础,系统性地、尽可能详细地介绍PHP语言底层的实现,旨在帮助更多的开发者进一步理解PHP,参与到 PHP 的实现中,为未来 PHP 的发展贡献一份力量!全书内容主要包括 PHP 数据类型的实现、PHP 的编译及执行、PHP 内存的管理、函数及面向对象的实现、 PHP 基础语法的实现,以及 PHP 扩展的开发。


点击查看原图

标签: PHP7

0

PHP7内核学习起步!

发布于:2019-2-15 17:48 作者:song100e 浏览:545 分类:内核剖析学习

        PHP7 版本的发布,Zend 引擎被再次重写,并以 Zend Engine 3.0 的身份亮相,使得 PHP 语言的性能得到大幅度提升,大量测试显示 PHP7 比 PHP5.6 在各种开源项目中有 60% 到 200% 的性能提升。学习和研究 PHP7 内核对于提升个人使用水平和内功很有必要。

点击查看原图


一,源码下载及安装

$ wget http://php.net/distributions/php-7.0.12.tar.gz
$ tar zxvf php-7.0.12.tar.gz
$ cd php-7.0.12/
$ ./configure --prefix=/usr/local/php-7.0.12 --enable-debug --enable-fpm
$ make && sudo make install


二,目录概览

以 php-7.0.12 为例,下面是每个目录的说明。

目录 说明
TSRM 线程相关安全的实现
Zend PHP 解析器的核心实现
build linux 下编译相关的目录
ext PHP 的扩展
main PHP 的主要代码
netware 网络目录,socket 的定义与实现
pear PHP 扩展及应用的代码仓库
sapi PHP 的应用层接口
scripts Linux 下的脚本目录
tests 测试脚本目录
travis 用于构建,非 PHP 特有目录
win32 Windows 下编译 PHP 的相关脚本


三,核心目录

  1.         sapi 全称 Server API,负责 PHP 对外提供服务规范,它定义了结构体 sapi_module_struct,该结构体定义了模式启动、关闭、激活、失效等多个钩子函数指针,每个模式将这些函数指针指向自己的函数。
  2.         main 目录的作用是承接 SAPI 的请求,分析出要执行的脚本文件和参数,并对环境和配置进行初始化,比如初始化变量和常量、注册函数、解析配置文件、加载扩展等等。
  3.         Zend 目录就是大家所熟知的 Zend 引擎,是 PHP 最核心的部分,主要负责 PHP 的语法实现、内存管理及脚本的编译运行环境等,它由编译器、执行器两部分组成。编译器负责将 PHP 代码进行词法、语法分析,并生成抽象语法树,然后进一步编译为 opcode,opcode 是 Zend 虚拟机可识别的指令。
  4.         ext 是 extension 的缩写,它是扩展 PHP 内核功能的一种方式,分为 PHP 扩展 与 zend 扩展,都支持用户自定义开发,这两种都比较常见,PHP 扩展有 gd、json、date、array 等,而我们熟知的 opcache 就是 Zend 扩展。
  5.         TSRM 全称叫做 Thread Safe Resource Manager,也就是线程安全资源管理器。


标签: PHP7

0