您的位置: 翼速应用 > 业内知识 > PHP框架 > 正文

分享一下2022年最新PHP特性、内核及架构

本文来给大家分享一下2022年最新PHP特性、内核及架构,希望能给大家带来帮助,下面一起看看。


分享一下2022年最新PHP特性、内核及架构


分享一下2022年最新PHP特性、内核及架构


PHP8之特性


1、jit即时编译器。jit在opcache优化之后的基础上,结合runtime的信息再次优化,直接生成机器码。jit不是opcache优化的代替,是增强。


2、match表达式,用于变量的值转换与赋值。


3、联合类型。


支持声明并接受多个不同类型的,它是两种或多钟类型的集合。


4、static返回类型。PHP 8 中支持 static 返回类型将更加高效。


5、弱映射WeakMap。允许数组中的key放入对象。


6、类的变更、使用


●  1、可变参数继承(鸡肋),允许


●  2、后期静态绑定(LSB)(有用),对框架级别的封装、一些工厂设计模式有用。


●  3、现在可以使用以下方法获取对象的类名称


●  4、现在,new 和 instanceof 可以与任意表达式一起使用,使用new(expression)(... $args) 和 $obj instanceof(expression)。


●  5、现在允许写。


●  6、添加 Stringable 接口(作用一般,用在视图模板封装)。


●  7、trait 现在可以定义抽象的私有方法。


PHP7之新特性(与PHP5区别)


1、标量类型声明和返回值类型声明。


2、null合并运算符(??)


3、命名空间引用 use 加强:从同一 namespace 导入的类、函数和常量现在可以通过单个 use 语句 一次性导入了


4、匿名类:现在支持通过new class 来实例化一个匿名类


5、性能比php5提升2倍。


6、支持64位。


为什么php7比php5性能提升了?


1、变量存储字节减小。减少内存占用,提升变量操作速度


2、改善数组结构。数组元素和hash映射表被分配在同一块内存里,降低了内存占用、提升了 cpu 缓存命中率


3、改进了函数的调用机制。通过优化参数传递的环节,减少了一些指令,提高执行效率


PHP7执行流程分享


PHP7执行流程


词法分析,把源代码切割成多个字符串单元(Token)


语法分析器把Token转换成AST抽象语法树


抽象语法树转换成opcodes(opcode指令集合)


虚拟机解释执行执行opcodes(opcode是一组指令标识,对应handler处理函数)


web模式下,PHP 生命周期有以下几个阶段组成


SAPI运行PHP都经过下面几个阶段:


1、模块初始化阶段(module init):


这个阶段主要进行php框架、zend引擎的初始化操作。这个阶段一般是在SAPI启动时执行一次,对于FPM而言,就是在fpm的master进行启动时执行的。php加载每个扩展的代码并调用其模块初始化例程(MINIT),进行一些模块所需变量的申请,内存分配等。


2、请求初始化阶段(request init):


当一个页面请求发生时,在请求处理前都会经历的一个阶段。对于fpm而言,是在worker进程accept一个请求并读取、解析完请求数据后的一个阶段。在这个阶段内,SAPI层将控制权交给PHP层,PHP初始化本次请求执行脚本所需的环境变量。


3、php脚本执行阶段:


php代码解析执行的过程。Zend引擎接管控制权,将php脚本代码编译成opcodes并顺次执行


4、请求结束阶段(request shutdown):


请求处理完后就进入了结束阶段,PHP就会启动清理程序。这个阶段,将flush输出内容、发送http响应内容等,然后它会按顺序调用各个模块的RSHUTDOWN方法。 RSHUTDOWN用以清除程序运行时产生的符号表,也就是对每个变量调用unset函数。


5、模块关闭阶段(module shutdown):


该阶段在SAPI关闭时执行,与模块初始化阶段对应,这个阶段主要是进行资源的清理、php各模块的关闭操作,同时,将回调各扩展的module shutdown钩子函数。这是发生在所有请求都已经结束之后,例如关闭fpm的操作。(这个是对于CGI和CLI等SAPI,没有“下一个请求”,所以SAPI立刻开始关闭。)


php7架构之特性


php7架构之特性


Zend 引擎:Zend引擎为PHP提供了基础服务,包括词法分析 语法分析 ,AST抽象语法树编译 opcodes执行,PHP的变量设计、内存管理、进程管理。


PHP层:绑定了SAPI层并处理与它的通信,它同时对safe_mode和open_basedir的检测提供一致的控制层,将fopen()、fread()和fwrite()等用户空间的函数与文件和网络I/O联系起来。


SAPI:包括了cli fpm等,把接口对外接口都抽象出来,只要遵守SAPI协议便可以实现一个server。


拓展:zend 引擎提供了核心能力和接口规范,在此基础上可以开发拓展


php数据的实现


php数据的底层实现是散列表(也叫hashTable)


PHP 的垃圾回收机制


PHP 可以自动进行内存管理,清除不需要的对象。


PHP 使用了引用计数GC机制。


每个对象都内含一个引用计数器 refcount,每个 reference 连接到对象,计数器加 1。当 reference 离开生存空间或被设为 NULL,计数器减 1。当某个对象的引用计数器为零时,PHP 知道你将不再需要使用这个对象,释放其所占的内存空间。


PHP-FPM 是什么架构模式 怎么优化


它是一个master和worker的架构模式,work处理请求,master管理和回收子进程。


优化的话,曾经有更改过它的进程数的配置。


简述一下: 由于之前配置的静态模式,默认的 200 个进程数,后来有了一定的并发,我就该改成 “第三种” 配置模式,配置指定数量的进程数,有个最小值和最大值(最大值这里其实是忘了,就是想这肯定不能没有限制,毕竟硬件资源就是天花板呢),然后根据实际的请求数,然后动态的增加进程数量。


以上就是关于2022年最新PHP特性、内核及架构之分享,翼速应用平台内有更多相关资讯,欢迎查阅!


我来说两句

0 条评论

推荐阅读

  • 响应式布局CSS媒体查询设备像素比介绍

    构建响应式网站布局最常见的是流体网格,灵活调整大小的站点布局技术,确保用户在使用的幕上获得完整的体验。响应式设计如何展示富媒体图像,可以通过以下几种方法。

    admin
  • 提升网站的性能快速加载的实用技巧

    网站速度很重要,快速加载的网站会带来更好的用户体验、更高的转化率、更多的参与度,而且在搜索引擎排名中也扮演重要角色,做SEO,网站硬件是起跑线,如果输在了起跑线,又怎么跟同行竞争。有许多方法可提升网站的性能,有一些技巧可以避免踩坑。

    admin
  • 织梦CMS TAG页找不到标签和实现彩色标签解决方法

    织梦cms是我们常见的网站程序系统的一款,在TAG标签中常常遇到的问题也很多。当我们点击 tags.php 页的某个标签的时候,有时会提示:“系统无此标签,可 能已经移除!” 但是我们检查程序后台,以及前台显示页面。这个标签确实存在,如果解决这个问题那?

    admin
  • HTML关于fieldset标签主要的作用

    在前端开发html页面中常用的标签很多,今天为大家带来的是关于HTML中fieldset标签主要的作用说明,根据技术分析HTML

    admin

精选专题