「php」关于PHP7.2 版本性能介绍,基础学习推荐!
mhr18 2024-10-16 10:13 24 浏览 0 评论
本文主要和大家详细介绍PHP7.2 版本性能,希望能帮助大家对PHP7.2有一个更清晰的认识。
1. 不向后兼容的变更
Core:
对于封闭资源来说,gettype()函数将返回resource(closed),取代之前的unknown type。
对于__PHP_Incomplete_Class类对象来说,is_object()函数将返回true。
移除对Netware操作系统的支持。
array类型转换成object类型((object)或者settype())时,将把整型键转换成属性名,这修复了之前版本的数字键不能作为属性名的问题。
object类型转换成array类型((array)或者settype())时,以及对象的属性映射到数组中(get_object_vars())时,会把整数属性转换成数字键,这修复了之前版本的整数属性不可访问的问题。
对未定义常量的非限定性引用将导致一个waring级别的错误,取代之前的notice级别,之后的版本会是error级别的错误。
支持的最低的Windows版本是Windows 7和Windows Server 2008 R2。
取消了原生trait属性值的兼容性检查行为。
object将不能被用作类名。
BcMath
和fmod()函数一样,bcmod()函数取消了取模操作(%),也就是数值的小数部分截断变成整数。例如:bcmod('4','3.5')将返回0.5而不是1。
Hash
hash_hmac(),hash_hmac_file(),hash_pbkdf2()以及hash_init()(options参数为HASH_HMAC时),这些函数将不再支持非加密的哈希函数。
JSON
当json_decode()函数的第二个参数assoc是null时,options支持选项中的JSON_OBJECT_AS_ARRAY将被启用,在之前的版本中这个参数是被我们一直忽略的。
Session
移除了register_globals相关的代码,"!"可以被用在$_SESSION的键名中。
session被用来正确的管理会话状态,禁止无效操作,当代码有问题时将会触发该变化。如果你不幸遇到了这个问题,这表明你的代码是存在问题的。
sesseion_start(),session_status(),session_regenerate_id(),这些函数被用于设置或者返回正确的会话状态。
session_unset(),session_write_close()/session_commit(),session_abort(),session_reset(),这些函数返回从没有返回值变成返回布尔值。他们允许允许空的参数,并且会对这些空的检查进行检查。
session_start(),session_set_cookie_params(),session_name(), session_module_name(),session_set_save_handler(), session_regenerate_id(),session_cache_limiter(),session_cache_expire(),session_unset(), session_destroy(), session_write_close()/session_commit(),session_reset(),这些函数将禁止无效的会话状态和http头状态,返回正确的布尔值或者数值。
session.name,session.save_path,session.cookie_lifetime,session.cookie_path,session.cookie_domain,session.cookie_httponly,session.cookie_secure,session.use_cookies,session.use_only_cookies,session.use_strict_mode,session.referer_check,session.cache_limiter,session.cache_expire,session.lazy_write,session.save_handler,session.serialize_handler,session.gc_probability,session.gc_pior,session.gc_maxlifetime,这些ini的值的设定需通过ini_set()函数的成功调用,无效的ini修改操作将不会成功。
由于会话能够被正确管理(session_start()),部分E_ERROR级别的错误信息将转化成E_WARNING级别。
会话将不再被无效的和无用的会话初始化
当头部信息已经被发送,此时去设置新的ini值将无效(通过session_name(),session_module_name(),session_save_path(),session_cache_limiter()和 session_cache_expire()这些函数)。
现在这些正确的行为会影响到cli命令行模式下管理会话的状态。使用输出缓冲,就像是在网页应用那样将解决在cli脚本下的问题。
Standard
自7.1版本以来,在64位机器上,同一个种子的mt_rand()和rand()产生的随机数顺序可能会不一样。
2. 新特性
Core
当重写一个方法和接口时,其参数类型是可省略的。这遵从了里氏平衡原则的参数类型的逆变。
允许继承后的抽象类来重写被继承的抽象类的抽象方法。
允许分组命名空间的尾部逗号。
对象类型的注释是允许的。
DBA
实现了对LMDB后端的支持。
JSON
在json_encode()和json_decode()增加了对JSON_INVALID_IGNORE和JSON_INVALTD_UTF8_SUBSTITUTE的支持,取代了之前的utf-8编码的无效类型。
OCI8
增加了Oracle数据库的透明应用故障切换(TAF)的支持。
PCRE
增加了内部选项(j)修改本地的PCRE_DUPNAMES选项。
Sodium
新的加密扩展。
SQLite3
实现了写入BLOBs。
Standard
当使用libargon2来编译PHP时,简化的哈希密码的API已更新,用来支持Argon2。
windows平台支持proc_nice()函数。
Zip
读/写加密存档,依赖于libzip 1.2.0, 新的方法: ZipArchive:: setEncryptionName($ name,$ method [,$ password]); ZipArchive:: setEncryptionIndex($ index,$ method [,$ password]); 新的常量: ZipArchive:: EM_NONE ZipArchive:: EM_AES_128 ZipArchive:: EM_AES_192 ZipArchive:: EM_AES_256
从zip流上下文接受"密码"。
ZipArchive实现可计数,增加ZipArchive::count()方法。
3. SAPI模块变更
4. 废弃的功能
下面是将要在php8.0版本中废弃的功能。
Core
配置文件的磁道错误将被废弃。
__autoload()将被废弃,使用spl_autoload_register()来替代。
(unset)将被废弃,此项变化不会影响unset($var)的语言结构。
create_function()函数将被废弃,使用匿名函数来替代。
each()函数结构将被废弃,使用foreach()循环来替代。
Exif
read_exif_data()将被废弃,使用exif_read_data()来替代。
GD
png2wbmp()和jpeg2wbmp()将被废弃。
GMP
gmp_random()将被废弃,使用gmp_random_bits()或者()来替代。
Intl
INTL_IDNA_VARIANT_2003将被废弃,使用INTL_IDNA_VARIANT_UTS46来替代。
Mbstring
mbstring.func_overload的配置文件将被废弃。
Standard
不用参数来调用parse_str()将被废弃。
用字符串参数来调用assert()将被废弃,使用常规表达式来替代。
5. 变更的函数
Standard
当设置为PASSWORD_ARGON2I时,password_hash()可以生成Argon2散列。
当使用PASSWORD_ARGON2I时,下面这些选项可能默认被设置:memory_cost,time_cost。这些选项的默认值是PASSWORD_ARGON2_DEFAULT_MEMORY_COST。如果没有设置,则默认是PASSWORD_ARGON2_DEFAULT_TIME_COST和PASSWORD_ARGON2_DEFAULT_THREADS。
password_verify()可以验证Argon2散列。
password_get_info()和password_needs_rehash()可以接受Argon2哈希值。
mail()/mb_send_mail()接受数组$extra_header。数组参数是针对RFC 2822进行检查的。 数组格式: php $extra_headers = [ 'Header-Name' => 'Header value', 'Multiple' => ['One header','Another header'], 'Multiline' = "FirstLine\r\n SecondLine", ];
当传递一个无效参数时,count()函数将抛出warning警告。
大端和小端的字节序下,pack()和unpack()支持float和double类型。
number_format()函数将确保零值不包含负号。
XML
utf8_encode()和utf8_decode() 函数已被作为字符串移至标准扩展。
6. 新增的函数
Core
增加stream_istty()。
增加sapi_windows_vt100_support()。
DOM
DomNodeList实现了Countable,增加了DomNodeList::count()。
DOMNamedNodeMap实现了Countable,增加了DOMNamedNodeMap :: count()。
FTP
增加了ftp_append()。
GD
增加了imagesetclip()和imagegetclip()。
增加了imageopenpolygon()。
增加了imageresolution()。
增加了imagecreatefrombmp()和imagebmp()。
Hash
增加了hash_hmac_algos()。
Mbstring
增加了mb_chr()和mb_ord()。
增加了mb_scrub。
OCI8
增加了oci_register_taf_callback()和oci_unregister_taf_callback()对Oracle数据库的透明应用故障切换(TAF)的支持。
Sockets
增加了socket_addrinfo_lookup(),socket_addrinfo_connect(),socket_addrinfo_bind()和socket_addrinfo_explain()。
SPL
增加了spl_object_id()。
7. 新增的类和接口
8. 移除的扩展和SAPI
Mcypt
已废弃的mcrypt扩展已被移至PECL。
libmcrypt自2007年开始就没有维护,不推荐继续使用这个扩展。
9. 其他对扩展的变更
EXIF
增加了对如下格式的exif标签支持:Samsung,DJI,Panasonic,Sony,Pentax,Minolta,Sigma/Foveon,AGFA,Kyocera,Ricoh & Epson。
exif_read_data()和exif_t humbnail()支持第一个参数是传递流。
GD
移除了--enable-gd-native-ttf配置选项。
imagegd()将truecolor图像存储为真彩色图像,替代了之前的转换为调色板。
在使用系统libgd编译时,mageantialias()也支持。
Mbstring
mb_check_encoding()接受数组参数,递归检查其键和值。
mb_convert_encoding()接受数组参数,其值的编码可以递归地转换。
PDO_OCI
--with-pdo-oci的配置语法将不再Oracle客户端。
pdo_sqlite
使用sqlite3_prepare_v2()和sqlite3_close_v2()来代替他们之前的函数。
10. 新增全局常量
Core
PHP_FLOAT_DIG
PHP_FLOAT_EPSILON
PHP_FLOAT_MIN
PHP_FLOAT_MAX
PHP_OS_FAMILY
Fileinfo
FILEINFO_EXTENSION
GD
IMG_EFFECT_MULTIPLY
IMG_BMP
PCRE
PREG_UNMATCHED_AS_NULL
Standard:
PASSWORD_ARGON2_DEFAULT_MEMORY_COST
PASSWORD_ARGON2_DEFAULT_TIME_COST
PASSWORD_ARGON2_DEFAULT_THREADS
PASSWORD_ARGON2I
11. INI文件处理的变更
sql.safe_mode
该INI选项已被移除。
realpath_cache_size
默认是4096k。
opcache.fast_shutdown
该INI选项已经被移除。 fast_shutdown处理的一种变型已经被集成到PHP内核,在生产环境中将默认开启。
12. Windows支持
支持VT100控制台模式。
13. 其他变更
编译系统
autoconf最低支持版本是2.64。
相关推荐
- Spring Boot 分布式事务实现简单得超乎想象
-
环境:SpringBoot2.7.18+Atomikos4.x+MySQL5.71.简介关于什么是分布式事务,本文不做介绍。有需要了解的自行查找相关的资料。本篇文章将基于SpringBoot...
- Qt编写可视化大屏电子看板系统15-曲线面积图
-
##一、前言曲线面积图其实就是在曲线图上增加了颜色填充,单纯的曲线可能就只有线条以及数据点,面积图则需要从坐标轴的左下角和右下角联合曲线形成完整的封闭区域路径,然后对这个路径进行颜色填充,为了更美观...
- Doris大数据AI可视化管理工具SelectDB Studio重磅发布!
-
一、初识SelectDBStudioSelectDBStudio是专为ApacheDoris湖仓一体典型场景实战及其兼容数据库量身打造的GUI工具,简化数据开发与管理。二、Select...
- RAD Studio 、Delphi或C++Builder设计代码编译上线缩短开发时间
-
#春日生活打卡季#本月,Embarcadero宣布RADStudio12.3Athens以及Delphi12.3和C++Builder12.3,提供下载。RADStudio12.3A...
- Mybatis Plus框架学习指南-第三节内容
-
自动填充字段基本概念MyBatis-Plus提供了一个便捷的自动填充功能,用于在插入或更新数据时自动填充某些字段,如创建时间、更新时间等。原理自动填充功能通过实现com.baomidou.myba...
- 「数据库」Sysbench 数据库压力测试工具
-
sysbench是一个开源的、模块化的、跨平台的多线程性能测试工具,可以用来进行CPU、内存、磁盘I/O、线程、数据库的性能测试。目前支持的数据库有MySQL、Oracle和PostgreSQL。以...
- 如何选择适合公司的ERP(选erp系统的经验之谈)
-
很多中小公司想搞ERP,但不得要领。上ERP的目的都是歪的,如提高效率,减少人员,堵住财务漏洞等等。真正用ERP的目的是借机提升企业管理能力,找出管理上的问题并解决,使企业管理更规范以及标准化。上ER...
- Manus放开注册,但Flowith才是Agent领域真正的yyds
-
大家好,我是运营黑客。前天,AIAgent领域的当红炸子鸡—Manus宣布全面放开注册,终于,不需要邀请码就能体验了。于是,赶紧找了个小号去确认一下。然后,额……就被墙在了外面。官方解释:中文版...
- 歌浓酒庄总酿酒师:我们有最好的葡萄园和最棒的酿酒师
-
中新网1月23日电1月18日,张裕董事长周洪江及总经理孙健一行在澳大利亚阿德莱德,完成了歌浓酒庄股权交割签约仪式,这也意味着张裕全球布局基本成型。歌浓:澳大利亚年度最佳酒庄据悉,此次张裕收购的...
- 软件测试进阶之自动化测试——python+appium实例
-
扼要:1、了解python+appium进行APP的自动化测试实例;2、能根据实例进行实训操作;本课程主要讲述用python+appium对APP进行UI自动化测试的例子。appium支持Androi...
- 为什么说Python是最伟大的语言?看图就知道了
-
来源:麦叔编程作者:麦叔测试一下你的分析能力,直接上图,自己判断一下为什么Python是最好的语言?1.有图有真相Java之父-JamesGoshlingC++之父-BjarneStrou...
- 如何在Eclipse中配置Python开发环境?
-
Eclipse是著名的跨平台集成开发环境(IDE),最初主要用来Java语言开发。但是我们通过安装不同的插件Eclipse可以支持不同的计算机语言。比如说,我们可以通过安装PyDev插件,使Eclip...
- 联合国岗位上新啦(联合国的岗位)
-
联合国人权事务高级专员办事处PostingTitleIntern-HumanRightsDutyStationBANGKOKDeadlineOct7,2025CategoryandL...
- 一周安全漫谈丨工信部:拟定超1亿条一般数据泄露属后果严重情节
-
工信部:拟定超1亿条一般数据泄露属后果严重情节11月23日,工信部官网公布《工业和信息化领域数据安全行政处罚裁量指引(试行)(征求意见稿)》。《裁量指引》征求意见稿明确了行政处罚由违法行为发生地管辖、...
- oracle列转行以及C#执行语句时报错问题
-
oracle列转行的关键字:UNPIVOT,经常查到的怎么样转一列,多列怎么转呢,直接上代码(sshwomeyourcode):SELECTsee_no,diag_no,diag_code,...
你 发表评论:
欢迎- 一周热门
- 最近发表
- 标签列表
-
- oracle位图索引 (74)
- oracle批量插入数据 (65)
- oracle事务隔离级别 (59)
- oracle 空为0 (51)
- oracle主从同步 (56)
- oracle 乐观锁 (53)
- redis 命令 (78)
- php redis (88)
- redis 存储 (66)
- redis 锁 (69)
- 启动 redis (66)
- redis 时间 (56)
- redis 删除 (67)
- redis内存 (57)
- redis并发 (52)
- redis 主从 (69)
- redis 订阅 (51)
- redis 登录 (54)
- redis 面试 (58)
- 阿里 redis (59)
- redis 搭建 (53)
- redis的缓存 (55)
- lua redis (58)
- redis 连接池 (61)
- redis 限流 (51)