PHP 5 6 7 8 9 各重要版本开发特性和选择简要说明

PHP开发,所用版本的选型

PHP5.4是最后一个支持纯正32位操作系统的版本,在Winxp下仍可使用。

PHP5.6是php5.x的最后一个稳定版本,时至今天,仍有很多用户网站系统在使用,网上仍有很多学习资料是基于这个版本,大量的第三方(旧版本)项目也能在这版本运行,系统硬件需求和资源占用相对也比较低。

网上称PHP为最好的语言,说得也就是这个版本(php5.x)。从好的方面看,因为这个版本对新手学习友好,老手用起来感觉自由无拘束,其它语言转过来的人也因它使用操作简单,能快速生产web项目制作,应用于对性能不敏感的项目。运维也简单,硬件要求低,配置简单,可以不停服实现更新,无需重启机器就能实现即时代码修改和重新部署应用。很少内存泄漏,代码稳定后,项目长期挂在外网也不用重启 。(个人认为)php业务层逻辑代码无所谓技术含量,也无需加密,随便写,随便改,commit代码就能马上看到效果。内置函数也强大,如:实现读写文本的功能PHP只需要用file_get/put_contents就能搞定,而Java,C#需要new好几个对象,再加while循环才能全部读取。(这是我写过 Java,C#,php,golang,nodejs,python 代码后得出的结论 )。只是后面的PHP版本,越搞越来越臃肿,语法也开始朝着复杂繁锁的方向发展。

PHP7 引入了变量强制类型定义,并优化脚本编译,在性能上有5%至25%的提升,但接口变化较大,同时也是一个不太稳定版本。会时而遇到开发调试问题。性能也被后面php8JIT超越。(另外,MS在php8起,不再提供php for windows的官方支持,因为大多数用户都把windows当作php的开发和调试环境,甚至调试时都没挂在IIS上,开发者在正式环境上布署php应用大部分都选择Linux。因此在IIS上运行php最稳定的版本是php7)

PHP8.0至8.3版本,加入JIT编译,是Php7优化版,性能上对比7有5%至15%以上的提升。在代码上,带强类型定义的代码在8下执行速度较快。若是像php5那样的定义无类型的变量,也可以执行,但性能提升较少。

从Php8.4版开始,其编译PHP会生成中间字节码IR(可以简单理解为:编译生成 能适配通用型CPU运行、体积增大的opcode),其IR节码有点像Java、C#那样,意图实现全平台复用。但首次访问系统时会产生编译耗时,会有短暂的卡顿,各平台优化能力有待验证和提升,各种扩展适配IR的稳定性还有待观察。(与7.3类似)它是一个为php9作预演的白鼠过渡版本。

PHP 9  完善编译字节IR的适应性稳定性和多功能性,写的代码显得越来越臃肿。和7,8一样,可能要叠代几个版本才能稳定下来。

按实际情况,版本使用建议如下:

● 需求有32位(嵌入式)微机系统,或用作VM虚拟盘,嵌入Docker时尽量极省资源,用php5.4。

(如果你希望 nginx, mysl , php,甚至docker ,全都安装在一台最便宜的云服务器上,且还能相对流畅地跑起来,应用在一些闲余时间额外开发项目,只要维护方便也无所谓开源闭源,可以考滤使用此版本。)

● 希望兼容性好,网上学习资料多。更期望项目系统的稳定、易测试、易维护,易布署,用php5.6,体系成熟,布署简单,资源占用低(可以用作替代5.4的项目)。

● 希望使用性能已经最优化的,成熟稳定的php版本,目前用 php8.3 (2025),这是适配特定平台下最优JIT编译。( 即便是 PHP5时期的代码,无须加入强类型,也能直接在8.3下运行,遇到异常,修改源码就行了)

● 后面更高的PHP版本,估计接口会有持续的小变化,性能还要不断优化,要两三年后才能稳定下来。

● 不建议使用Php8.4,生成的opcode还在beta中,后面也会被PHP9所代替。

        

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/66525.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Xen 虚拟化技术在云计算平台中的应用详解

Xen 虚拟化技术在云计算平台中的应用详解 随着云计算的飞速发展,虚拟化技术成为构建云平台的核心支柱,而 Xen 作为一种高性能、开源的虚拟化技术,被广泛应用于云计算平台中。Xen 凭借其灵活的架构和出色的性能,为众多云服务商提供…

Elixir语言的正则表达式

Elixir语言中的正则表达式 引言 正则表达式是用于匹配文本模式的一种强大工具。在很多编程语言中,正则表达式被广泛应用于字符串的查找、替换和验证。Elixir作为一门现代化的函数式编程语言,也提供了对正则表达式的支持,方便开发者进行复杂…

MATLAB语言的正则表达式

MATLAB 中的正则表达式使用指南 引言 在数据处理和文本分析中,正则表达式是一种强大而灵活的工具。MATLAB 作为一种广泛应用于科学计算和数据分析的编程语言,提供了对正则表达式的支持,使得用户可以方便地进行字符串匹配与处理。本文将深入…

《Java 中 Thread 类的基本用法总结》

在 Java 编程中,Thread类是实现多线程的核心类之一。下面将对Thread类在创建线程、线程中断、线程等待、线程休眠和获取线程实例等方面的基本用法进行总结。 一、线程创建 继承 Thread 类 定义一个类继承自Thread类。重写run方法,run方法中包含了该线程…

Flannel:Kubernetes 网络方案的“轻骑兵”

Flannel:Kubernetes 网络方案的“轻骑兵” 在 Kubernetes 中,网络是连接所有组件的核心。每个 Pod 都需要一个独立的 IP,方便 Pod 间的通信,而 Flannel 正是解决这个问题的经典容器网络插件(CNI)。它简单、…

Android - NDK:编译可执行程序在android设备上运行

在android开发中,调试时会把C代码直接编译成可执行程序,运行在android设备上以确认其功能是否正常。 1、基于NDK编译可执行文件 2、push到 /data/local/tmp目录下 3、设置权限,执行。 ndk工程中build.gradle设置 groovy plugins {id com.a…

用matlab调用realterm一次性发送16进制数

realterm采用PutString接口进行发送,需要注意的是发送的16进制数前面要加入0x标志。只有这样,realterm才能将输入的字符串识别为16进制数的形式。 另外,PutString函数支持两个参数输入,第一个参数为字符串,第二个参数为发送形式&…

Python3刷算法来呀,贪心系列题单

1.7号题单 1、​​​​​​k次取反后最大值 2、柠檬水找零 3、分发糖果 示例 1: 输入:ratings [1,0,2] 输出:5 解释:你可以分别给第一个、第二个、第三个孩子分发 2、1、2 颗糖果。示例 2: 输入:ratings…

Couchbase 和数据湖技术的区别、联系和相关性分析

Couchbase 和数据湖技术(如 Delta Lake、Apache Hudi、Apache Iceberg)分别是两类不同的数据存储与管理系统,但它们也可以在特定场景中结合使用,以下是它们的区别、联系和相关性分析: 区别: 1. 核心用途&a…

el-table拖拽表格

1、拖拽插件安装 npm i -S vuedraggable // vuedraggable依赖Sortable.js,我们可以直接引入Sortable使用Sortable的特性。 // vuedraggable是Sortable的一种加强,实现组件化的思想,可以结合Vue,使用起来更方便。 2、引入拖拽函数…

深入理解 Android 中的 KeyguardManager

深入理解 Android 中的 KeyguardManager 引言 在 Android 系统中,KeyguardManager 是一个重要的系统服务,负责管理设备的锁屏界面(Keyguard)。锁屏界面是设备安全性的第一道防线,用于防止未经授权的用户访问设备。Ke…

Transformer 和 Attention机制入门

1. 什么是 Transformer 背景: 在自然语言处理领域,早期常使用循环神经网络(RNN)及其变体(如 LSTM、GRU)来处理序列数据,如机器翻译、文本生成等任务。然而,RNN 结构存在以下问题&…

Unity学习笔记(七)使用状态机重构角色攻击

前言 本文为Udemy课程The Ultimate Guide to Creating an RPG Game in Unity学习笔记 攻击状态重构 首先我们重构攻击状态的动画 之前的动画,我们是使用状态(isAttacking)攻击次数(comboCounter)完成动画的过渡,这样虽然能完成功能,但是如…

Windows10环境下安装RabbitMq折腾记

最近有个老项目需要迁移到windows10环境,用的是比较老的rabbitmq安装包,如下所示。经过一番折腾,死活服务起不来,最终果断放弃老版本启用新版本。现在把折腾过程记录下: 一、安装erlang 安装完成后的目录结构&#xff…

Three.js 基础概念:构建3D世界的核心要素

文章目录 前言一、场景(Scene)二、相机(Camera)三、渲染器(Renderer)四、物体(Object)五、材质(Material)六、几何体(Geometry)七、光…

了解RabbitMQ中的Exchange:深入解析与实践应用

在分布式系统设计中,消息队列(Message Queue)扮演着至关重要的角色,而RabbitMQ作为开源消息代理软件的佼佼者,以其高性能、高可用性和丰富的功能特性,成为了众多开发者的首选。在RabbitMQ的核心组件中&…

分布式主键ID生成方式-snowflake雪花算法

这里写自定义目录标题 一、业务场景二、技术选型1、UUID方案2、Leaf方案-美团(基于数据库自增id)3、Snowflake雪花算法方案 总结 一、业务场景 大量的业务数据需要保存到数据库中,原来的单库单表的方式扛不住大数据量、高并发,需…

Linux 系统搭建网络传输环境汇总

Ubuntu 系统搭建 TFTP 服务器 1. 创建 /home/username/workspace/tftp 目录并赋予最大权限,username 是自己用户名 sudo mkdir -p /home/username/workspace/tftp sudo chmod 777 /home/username/workspace/tftp 2. 安装 tftp-hpa( 客户端软件包&#x…

洛谷:P1540 [NOIP2010 提高组] 机器翻译

[NOIP2010 提高组] 机器翻译 题目背景 NOIP2010 提高组 T1 题目描述 小晨的电脑上安装了一个机器翻译软件,他经常用这个软件来翻译英语文章。 这个翻译软件的原理很简单,它只是从头到尾,依次将每个英文单词用对应的中文含义来替换。对于…

“AI智慧语言训练系统:让语言学习变得更简单有趣

大家好,我是你们的老朋友,一个热衷于探讨科技与教育结合的产品经理。今天,我想和大家聊聊一个让语言学习变得不再头疼的话题——AI智慧语言训练系统。这个系统可是我们语言学习者的福音,让我们一起来揭开它的神秘面纱吧&#xff0…