PHP7与PHP5有区别吗

  PHP 的生命周期 / 启动流程

  完整的生命周期为模块初始化、请求初始化、请求处理、请求关闭、模块关闭五大阶段。

  cli 模式下,每个脚本都会完整的执行上面的五大阶段;对于 fastcgi 模式而言,只在启动时会执行模块初始化,之后的请求都走了请求初始化、处理请求、请求关闭三大阶段,在 fastcgi 关闭时执行模块关闭阶段。各个扩展的加载也是在模块初始化阶段完成的。

  说一下 PHP 的(内存)垃圾回收机制

  每一个变量对应一个 zval 数据结构,在该结构内还有一个 val 结构体,该结构体内有一个引用计数(php7 而言,对于 php5,这个引用计数是保存在 zval 结构中的),标识该对象的引用数,当对象的引用计数为 0 时代表这个对象可被回收。

  对象的 refcount 减少的时机:修改变量、函数返回(释放局部变量)、unset 变量

  对于数组和对象而言,可能存在变量中的成员引用变量本身的情况,也就是循环引用,这样会造成这个变量永远不会被内存回收,而成为垃圾。

  PHP 里对于这种情况给出了垃圾回收机制:如果数组、对象的引用计数减少而且不为零,则认为他们可能是垃圾,把他们放到垃圾收集器里。等垃圾收集器到了一定的数量之后,进行垃圾处理:对所有可能的垃圾 refcount 减 1,如果为 1,说明是垃圾,则进行内存回收;如果不为 1,说明还有其他变量在使用,refcount 重新加 1;这种对象复用以及垃圾回收机制在其他语言中也有体现:redis 中也使用了引用计数表示每个对象的引用数量。

  PHP7 与 PHP5 的区别

  改进的性能 – 将 PHPNG 代码合并到 PHP7 中,速度是 PHP 5 的两倍。

  降低内存消耗 – 优化的 PHP 7 使用较少的资源。

  标量类型声明 – 现在可以强制执行参数和返回类型。

  一致的 64 位支持 – 对 64 位体系结构机器的一致支持。

  改进了异常层次 – 异常层次得到了改进

  许多致命的错误转换为例外 – 例外范围增加,涵盖许多致命的错误转换为例外。

  安全随机数发生器 – 增加新的安全随机数发生器 API。

  已弃用的 SAPI 和扩展已删除 – 各种旧的和不受支持的 SAPI 和扩展从最新版本中删除。

  空合并运算符(?) – 添加了新的空合并运算符。

  返回和标量类型声明 – 支持所添加的返回类型和参数类型。

  匿名类 – 支持匿名添加。

  零成本断言 – 支持零成本断言增加。

原创文章,作者:KEOIN,如若转载,请注明出处:http://www.wangzhanshi.com/n/9930.html

(0)
KEOIN的头像KEOIN
上一篇 2025年1月1日 16:51:56
下一篇 2025年1月1日 16:51:58

相关推荐

  • PHP 8存在着哪些新特性

    PHP 8新特性 新的主要PHP版本PHP 8预计将于2020年底发布。它现在处于非常活跃的开发阶段,所以在接下来的几个月里,事情可能会发生很大的变化。 在这篇文章中,我将持续更新…

    php 2025年1月2日
  • nohup在后台常驻运行php脚本

    nohup是什么 nohup是Linux和Unix系统中的一个命令,其作用是在终端退出时,让进程在后台继续运行。它的全称为“no hang up”,意为&l…

    php 2024年12月17日
  • PHP7与PHP5有哪些不同

    1、php标量类型和返回类型声明 #主要分为两种模式,强制性模式和严格模式 declare(strict_types=1) #1表示严格类型校验模式,作用于函数调用和返回语句;0表…

    php 2025年1月1日
  • PHP7留言板开发之JS验证的使用示例

    本节JS关键词有:function、onsubmit、onclick、document.getElementsByTagName(这些在前端开发中是常用的,所以必须掌握) 根据步骤…

    php 2025年1月1日
  • ​如何发挥出PHP7版本中的高性能

    如何发挥出PHP7版本中的高性能,PHP7发布也有一段时间了,但是现在还有很多小伙伴还在用PHP5.6开发项目,有的小伙伴用了PHP7只是听说是高性能的版本,却不知道如何体现出PH…

    php 2025年1月1日
  • 安装php7的方法

    PHP7的安装步骤: 1、下载php7解压文件,把解压好的文件夹重命名为PHP7 2、复制php.ini-development并改名为PHP.ini 3、打开apache24/h…

    2025年1月1日
  • php7中try/catch的使用方法

    1、这里直接抛出了错误,但没有捕捉 2、这里变量$a,没有声明 3、使用符号"@",抑制错误 4、通过函数 set_exception_handler() 设置…

    2025年1月1日
  • php实现简单路由实现伪静态

    伪静态作用 增强搜索引擎的友好性:通过改变动态的网页的URL,使之看起来像静态网页,伪静态技术有助于提高网站在搜索引擎中的表现,使网站内容更易被搜索引擎抓取和索引。 提升用户信任度…

    php 2024年12月17日
  • 如何理解优化PHP7性能的几个设置

    PHP7已经发布了, 作为PHP10年来最大的版本升级, 最大的性能升级, PHP7在多放的测试中都表现出很明显的性能提升, 然而, 为了让它能发挥出最大的性能, 我还是有几件事想…

    2025年1月1日
  • php7怎么写框架

    1、路由 路由协议的规则是使用了正则表达的匹配,将不同的链接分发到不同的控制器上去,也支持调用匿名函数 // 第一种,使用匿名函数 App::router()->g…

    php 2025年1月1日

发表回复

登录后才能评论