File tree Expand file tree Collapse file tree 2 files changed +13
-11
lines changed Expand file tree Collapse file tree 2 files changed +13
-11
lines changed Original file line number Diff line number Diff line change 1- ## 1.1 PHP简介
1+ ## 1.1 PHP概述
22
33### 1.1.1 PHP的历史发展
44PHP是一种非常流行的高级脚本语言,尤其适合Web开发,快速、灵活和实用是PHP最重要的特点。PHP自1995年由Lerdorf创建以来,在全球得到了非常广泛的应用。
@@ -9,7 +9,7 @@ PHP是一种非常流行的高级脚本语言,尤其适合Web开发,快速
99
1010在2000年5月22日,以Zend Engine 1.0为基础的PHP 4正式发布,2004年7月13日则发布了PHP 5,PHP 5则使用了第二代的Zend Engine。PHP包含了许多新特色:完全实现面向对象、引入PDO、以及许多性能方面的改进。目前PHP5.X仍然是应用非常广泛的一个版本。
1111
12- ### 1.1.2 PHP特点
12+ ### 1.1.2 特性
1313PHP 独特的语法混合了 C、Java、Perl 以及 PHP 自创新的语法,丰富的语法支持、同时支持面向对象、面向过程,相比C、Java等语言具有语法简洁、使用灵活、开发效率高、容易学习等特点。
1414
1515* 开源免费:PHP社群有大量活跃的开发者贡献代码
@@ -19,17 +19,20 @@ PHP 独特的语法混合了 C、Java、Perl 以及 PHP 自创新的语法,丰
1919* 扩展性:允许用户使用C/C++扩展PHP
2020* 跨平台:可以在unix、windows、max os等系统上面使用PHP
2121
22- ## 1.2 PHP7特性
23- PHP7在内核方面做了很多优化,大大提高了PHP的性能,比如zval结构以及引用计数的改变节省了内存的使用。接下来我们简单看下PHP7都有哪些比较大的改进。
22+ ### 1.1.3 PHP的相关组成
2423
24+ #### 1.1.3.1 SAPI
25+ PHP本身可以理解为是一个库函数,提供语言的编译与执行服务,它有标准的输入、输出,而SAPI是PHP的接入层,它接收用户的请求,然后调用PHP内核提供的一些接口完成PHP脚本的执行,所以严格意义上讲SAPI并不算PHP内核的一部分。
2526
27+ PHP的角色就好比是leveldb,它实现了基本存储功能,但是没有网络处理模块,而我们基于leveldb实现的完整存储服务就好比是SAPI。
2628
27- ## 1.3 PHP内核的组成
29+ PHP中常用的SAPI有cli、php-fpm,cli是命令行下执行PHP脚本的实现: ` bin/php script.php ` ,它是单进程的,处理模型比较简单,而php-fpm相对比较复杂,它实现了网络处理模块,用于与web服务器交互。
2830
29- ### 1.1.1 SAPI
30- PHP本身可以理解为是一个库函数,它有标准的输入、输出,而SAPI可以认为是PHP的一个使用者,它可以调用PHP内核提供的一些接口,所以严格意义上讲SAPI并不算PHP内核的一部分,最常用的SAPI就是cli、php-fpm这两个了,它们是再普通不过的C程序了,main函数通常也是定义在SAPI中,而PHP就是一个纯碎的解析器。
31+ #### 1.1.3.2 Zend引擎
32+ Zend是PHP语言实现的最为重要的部分,是PHP最基础、最核心的部分,它的源码在/Zend目录下,PHP代码从编译到执行都是由Zend完成的,后面章节绝大部分的源码分析都是针对Zend的。Zend整体由两个部分组成:
3133
32- ### 1.1.3 Zend引擎
33- Zend是PHP语言实现的核心,比如语法分析、代码执行等等都是Zend引擎实现的,这是PHP最基础、最核心的部分,我们后面绝大部分的源码分析都是针对Zend的。
34+ * __ 编译器:__ 负责将PHP代码编译为抽象语法树,然后进一步编译为可执行的opcodes,这个过程相当于GCC的工作,编译器是一个语言实现的基础
35+ * __ 执行器:__ 负责执行编译器输出的opcodes,也就是执行PHP脚本中编写的代码逻辑
36+
37+ #### 1.1.3.3 扩展
3438
35- ## 1.4 PHP执行的几个阶段
Original file line number Diff line number Diff line change 11## 7.6 函数
2-
32### 7.6.1 内部函数注册
43通过扩展可以将C语言实现的函数提供给PHP脚本使用,如同大量PHP内置函数一样,这些函数统称为内部函数(internal function),与PHP脚本中定义的用户函数不同,它们无需经历用户函数的编译过程,同时执行时也不像用户函数那样每一个指令都调用一次C语言编写的handler函数,因此,内部函数的执行效率更高。除了性能上的优势,内部函数还可以拥有更高的控制权限,可发挥的作用也更大,能够完成很多用户函数无法实现的功能。
54
You can’t perform that action at this time.
0 commit comments