PHP7内核剖析epub

图书网 2020年1月4日12:17:281 1.8K
摘要

适读人群 :本书适用于有一定C语言基础的PHP高级工程师,或者想了解PHP7的内部实现、扩展开发的工程师。
基于PHP7,深刻揭示内核原理
内容翔实,详细介绍PHP语言底层的实现
助力开发者进一步理解PHP,参与到PHP的实现中

PHP7内核剖析 作者:秦朋

PHP7内核剖析 出版社: 电子工业出版社

PHP7内核剖析 内容简介

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

PHP7内核剖析 目录

第1章 PHP基础架构

1.1 简介

1.2 安装及调试

1.3 PHP7的变化

1.4 PHP的构成

1.5 生命周期

1.6 小结

第2章 SAPI

2.1 Cli

2.1.1 执行流程

2.1.2 内置Web服务器

2.2 Fpm

2.2.1 基本实现

2.2.2 Fpm的初始化

2.2.3 worker――请求处理

2.2.4 master――进程管理

2.3 Embed

2.3.1 实现

2.3.2 使用

2.4 小结

第3章 数据类型

3.1 变量

3.1.1 变量类型

3.1.2 内部实现

3.2 字符串

3.3 数组

3.3.1 基本实现

3.3.2 散列函数

3.3.3 数组的初始化

3.3.4 插入

3.3.5 哈希冲突

3.3.6 查找

3.3.7 扩容

3.4 引用

3.5 类型转换

3.5.1 转换为NULL

3.5.2 转换为布尔型

3.5.3 转换为整型

3.5.4 转换为浮点型

3.5.5 转换为字符串

3.5.6 转换为数组

3.5.7 转换为对象

3.6 小结

第4章 内存管理

4.1 变量的自动GC机制

4.1.1 引用计数

4.1.2 写时复制

4.1.3 回收时机

4.2 垃圾回收

4.2.1 回收算法

4.2.2 具体实现

4.3 内存池

4.3.1 内存池的初始化

4.3.2 内存分配

4.3.3 系统内存分配

4.3.4 内存释放

4.4 线程安全

4.4.1 TSRM的基本实现

4.4.2 线程私有数据

4.4.3 线程局部存储

4.5 小结

第5章 PHP的编译与执行

5.1 语言的编译与执行

5.1.1 编译型语言

5.1.2 解释型语言

5.2 Zend虚拟机

5.2.1 opline指令

5.2.2 zend_op_array

5.2.3 zend_execute_data

5.2.4 zend_executor_globals

5.3 PHP的编译

5.3.1 词法、语法解析

5.3.2 抽象语法树编译

5.3.3 pass_two()

5.4 PHP的执行

5.4.1 handler的定义

5.4.2 调度方式

5.4.3 执行流程

5.4.4 全局execute_data和opline

5.5 运行时缓存

5.6 Opcache

5.6.1 opcode优化

5.6.2 JIT

5.7 小结

第6章 函数

6.1 用户自定义函数

6.1.1 语法解析

6.1.2 抽象语法树的编译

6.2 内部函数

6.3 函数的调用

6.4 函数的执行

6.5 小结

第7章 面向对象

7.1 类

7.1.1 常量

7.1.2 成员属性

7.1.3 成员方法

7.1.4 类的编译

7.1.5 内部类

7.1.6 类的自动加载

7.2 对象

7.2.1 对象的创建

7.2.2 非静态成员属性的读写

7.2.3 对象的复制

7.2.4 对象的比较

7.2.5 对象的销毁

7.3 继承

7.3.1 常量的继承

7.3.2 成员属性的继承

7.3.3 成员方法的继承

7.4 动态属性

7.5 魔术方法

7.6 小结

第8章 命名空间

8.1 概述

8.2 命名空间的定义

8.3 命名空间的使用

8.3.1 use导入

8.3.2 动态用法

8.4 小结

第9章 PHP基础语法的实现

9.1 静态变量

9.2 常量

9.2.1 const

9.2.2 define()

9.3 全局变量

9.3.1 全局变量符号表

9.3.2 全局变量的访问

9.3.3 全局变量的销毁

9.3.4 超全局变量

9.4 分支结构

9.4.1 if

9.4.2 switch

9.5 循环结构

9.5.1 while

9.5.2 do while

9.5.3 for

9.5.4 foreach

9.6 中断及跳转

9.6.1 break/continue

9.6.2 goto

9.7 include/require

9.8 异常处理

9.8.1 PHP中的try catch

9.8.2 内核中的异常处理

9.9 break/continue LABEL语法的实现

9.10 小结

第10章 扩展开发

10.1 扩展的内部实现

10.2 扩展的构成及编译

10.2.1 脚本工具

10.2.2 扩展的编写步骤

10.2.3 config.m4

10.3 钩子函数

10.3.1 模块初始化阶段

10.3.2 请求初始化阶段

10.3.3 请求结束阶段

10.3.4 post deactivate阶段

10.3.5 模块关闭阶段

10.4 全局资源

10.5 ini配置

10.6 函数

10.6.1 内部函数注册

10.6.2 函数参数解析

10.6.3 引用传参

10.6.4 函数返回值

10.6.5 函数调用

10.7 Zval的操作

10.7.1 zval的创建及获取

10.7.2 变量复制

10.7.3 引用计数

10.7.4 字符串操作

10.7.5 数组操作

10.8 常量

10.9 面向对象

10.9.1 内部类注册

10.9.2 成员属性

10.9.3 成员方法

10.9.4 常量

10.9.5 类的实例化

10.10 资源

10.11 小结

PHP7内核剖析 精彩文摘

本章将简单介绍PHP的基本信息,以及PHP的安装、调试,同时将介绍PHP生命周期中的几个阶段,它们是PHP整个流程中比较关键的几个阶段。

1.1 简介

PHP是一种非常流行的高级脚本语言,尤其适合Web开发,快速、灵活和实用是PHP很重要的特点。PHP自1995年由Lerdorf创建以来,在全球得到了非常广泛的应用。

PHP在1995年早期以Personal Home Page Tools(PHPTools)开始对外发表第一个版本,Lerdorf写了一些介绍此程序的文档,并且发布了PHP1.0。在这早期的版本中,提供了访客留言本、访客计数器等简单的功能,之后越来越多的网站开始使用PHP,并且强烈要求增加一些特性,在新的成员加入开发行列之后,Rasmus Lerdorf在1995年6月8日将PHP公开发布,希望可以通过社群来加速程序开发与寻找错误。这个版本被命名为PHP2,已经有了今日PHP的一些雏型,类似Perl的变量命名方式、表单处理功能,以及嵌入到HTML中执行的能力。程序语法上也类似Perl,有较多的限制,不过更简单、更有弹性。PHP/FI加入了对MySQL的支持,从此建立了PHP在动态网页开发上的地位。到了1996年年底,有15000个网站使用了PHP。

在1997年,任职于Technion IIT公司的两个以色列程序设计师Zeev Suraski和Andi Gutmans重写了PHP的解析器,成为PHP3的基础,而PHP也在这个时候改称为PHP:Hypertext Preprocessor,1998年6月正式发布PHP3。Zeev Suraski和Andi Gutmans在PHP3发布后开始改写PHP的核心,这个在1999年发布的解析器被称为Zend Engine,他们也在以色列的Ramat Gan 成立了Zend Technologies 来管理PHP的开发。

在2000年5月22日,以Zend Engine 1.0为基础的PHP4正式发布。2004年7月13日发布了PHP5,PHP5则使用了第二代的Zend Engine。PHP包含了许多新特色:完全实现面向对象,引入PDO,以及许多性能方面的改进。目前PHP5.x仍然是应用非常广泛的一个版本。

PHP独特的语法混合了C、Java、Perl及PHP自创新的语法,同时支持面向对象、面向过程,相比C、Java等语言具有语法简洁、使用灵活、开发效率高、容易学习等特点。

●开源免费:PHP社群有大量活跃的开发者贡献代码。

●快捷:程序开发快,运行快,技术本身学习快,实用性强。

●效率高:PHP消耗相当少的系统资源,自动gc机制。

●类库资源:有大量可用类库供开发者使用。

●扩展性:允许用户使用C/C++扩展PHP。

●跨平台:可以在UNIX、Windows、Mac OS等系统上使用PHP。

很多人认为PHP非常简单,没什么技术含量,这是非常片面的认识,任何语言都有其存在的价值、有其适合的应用领域,正是PHP底层的强大才造就了PHP语言的简洁、易用,这反而更能够提现出它的优秀所在。

1.2 安装及调试

在学习PHP内核之前,首先需要安装PHP,以方便在学习过程中进行调试。本书使用的PHP版本为7.0.12,下载地址为//php.net/distributions/php-7.0.12.tar.gz,下载后使用以下命令进行编译、安装:

——enable-debug 参数为开启debug模式,方便我们进行调试。关于调试自然少不了gdb了,PHP内核的实现虽然比较复杂,但是阶段划分比较鲜明,可以通过gdb在各个阶段设置断点,然后进行相应的调试。学习内核时,可以使用Cli 模式,因为它是单线程的,方便调试,这并不影响我们对内核的学习。同时,想要弄清楚PHP内核,自然少不了阅读PHP的源码,因此本书后面介绍的内容将会非常频繁地列举源码,而对于一些概念性的解释则点到为止。本书主要的目的是引导大家自己去阅读源码、探索PHP的实现,而不希望只简单地通过书中的描述来了解PHP,所以希望大家在阅读本书时,一定要准备好一份源码以便随时查看和调试。

1.3 PHP7的变化

PHP7与PHP5版本相比有非常大的变化,尤其是在Zend 引擎方面。为提升性能,PHP7对Zend进行了深度优化,使得PHP的运行速度大大提高,比PHP5.0~5.6快了近5倍,同时还降低了PHP对系统资源的占用。

下面介绍PHP7比较大的几个变化。

图书网:PHP7内核剖析epub

继续阅读

→→→→→→→→→→→→→→→→→→→→查找获取

程序设计

重构 改善既有代码的设计(中文版)pdf

《重构:改善既有代码的设计》(中文版)所提的这些重构准则将帮助你一次一小步地修改你的代码,这就减少了过程中的风险。很快你就会把这些重构准则和其名称加入自己的开发词典中,并且朗朗上口...
程序设计

数据结构 C语言版 第2版pdf

适读人群 :普通高校电子信息大类本科生学习、考研,同时也适合零售和培训。 采用“案例驱动”的编写模式。书中结合实际应用,将各章按照“案例引入——数据结构及其操作——案例分析与实现”...
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

评论:1   其中:访客  1   博主  0
    • 12345
      12345 9

      谢谢 无私奉献