PHP7的变化
2021-08-27 11:11:30 小德 PHP 访问次数 152

PHP7内核 尤其Zend引擎变化很大,使PHP运行速度比PHP5.0/PHP5.6快了近5倍,还降低了对系统的资源占用。

一、抽象语法树

7以前PHP代码在语法解析阶段直接生产ZendVM,7首先将PHP代码解析生成抽象语法树,然后将抽象语法树编译成ZendVM指令,将编译与执行隔离,编译不需要关心执行的规则,执行不需要关系编译的规则。

二、Native TLS

7使用Native TLS保存线程池资源,通过__thread标识一个全局变量,这样全局变量变成线程独享,不同线程修改不会相互影响。线程安全

三、指定函数参数,返回值类型

四、Zval结构变化

refcount_gc引用计数不在Zval中了,在具体的value中了,复制时不在需要将其Zval和zvalue_value绑定在一起了,Zval结构从24byte减少到16byte,降低系统资源占用。

五、HashTable变化

数组,函数符号表,类符号表,常量符号表都是通过hashTable实行的,大小从72byte减小到32byte.

六、执行器

执行器调度函数execute_ex(),负责执行代码编译生成的ZendVM指令,7以前需要将execute_data opline通过函数传参传递,7通过存储在寄存器来存储,避免函数传参频繁出入栈操作,寄存器速度比内存更快,这个优化使PHP的性能提升了5%的性能。

七、新的参数解析方式

八、throwable异常捕捉

try {
} catch (Throwable $e) {
    $e->getMessage()
}