这篇文章主要讲解了“PHP7与PHP5有区别吗”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“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 和扩展从最新版本中删除。
空合并运算符(?) - 添加了新的空合并运算符。
返回和标量类型声明 - 支持所添加的返回类型和参数类型。
匿名类 - 支持匿名添加。
零成本断言 - 支持零成本断言增加。
感谢各位的阅读,以上就是“PHP7与PHP5有区别吗”的内容了,经过本文的学习后,相信大家对PHP7与PHP5有区别吗这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是亿速云,小编将为大家推送更多相关知识点的文章,欢迎关注!
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。