PHP 8 - 学习/实践

1.应用场景

了解关注体验最新PHP 8的版本特性,以便在项目中使用。

2.学习/操作

1. 文档阅读

PHP: Hypertext Preprocessor

PHP 8 确认支持 JIT - OSCHINA - 中文开源技术交流社区

PHP的性能演进(从PHP5.0到PHP7.1的性能全评测) - 风雪之隅  //php8有望在2020年发布 | 海墨 

JIT被批准用于PHP 8,以提高CPU性能_Linux新闻_Linux公社-Linux系统门户网站 // JIT被批准用于PHP 8,以提高CPU性能

PHP 8.0 正式版发布,这是你没有学过的全新版本!JIT 计算性能提升巨大,原生注解属性助力!_哔哩哔哩_bilibili

PHP 8.0 - window 10下[含Docker方式]安装 - 学习/实践_穿素白衫的少年的博客-CSDN博客_php8 windows

【宇润】4-PHP8 FFI、JIT和Go的计算性能大战-PHP转Go语言之前你得先了解这些_哔哩哔哩_bilibili  

2.整理输出

2.1 介绍

官网: PHP: Hypertext Preprocessor

源代码: Index of /~pollita  // alpha 1 测试版本

key word:  php 加入jit

------------------------------------------------------- 我是分割线 ----------------------------------------------------

2020.11.27  php 8.0 正式发布

1. PHP: PHP 8.0.0 Release Announcement   // 简要介绍

2.2 上机体验

环境准备:

docker

1.通过docker, 在容器中体验php 8.0

打开docker hub 搜索 php 8.0-cli 

Docker Hub

我们使用的是:最后一个结果项--- 

点击复制图标: docker pull php:8.0-cli

2.打开vscode, 及准备好的项目目录

打开控制台, 粘贴复制的文本: docker pull php:8.0-cli

拉取php-8.0镜像, 等待镜像拉取完毕.

插入:

mac 下

3.运行镜像, 即实例化容器

打开docker desktop 客户端, 选择 images-->local, 可以看到出现我们刚刚拉取的php 8.0-cli镜像 ---> 点击后面的 [RUN] 按钮

windows下

mac下

4.点击run, 配置-->映射目录

插入: // 20201217 第二天

1. 建议映射目录, 不要直接将D:/直接都映射到docker容器中, 只需要其中某个目录即可.

这里是: D:\wamp\projects-learning --> /mnt/d/

2. 其中/mnt/d/ 建议使用反斜线, 否则可能会挂载目录失败.

3. 如果是mac下,路径正常配置即可

再次, 点击 Run, 出现如下界面

插入:

mac下 // 可以看到使用PHP的版本以及来源

5.打开vscode,控制台-->输入: docker exec -it php-8.0 /bin/bash

进入php-8.0容器中,

然后, 进入指定的项目目录下, 

查看php版本:

php -v

接着, 再执行下main.php

初步看, 一切正常. 

接下来, 开始一个一个体验php8的新特性. 

6.体验新特性

1. 打开: PHP For Windows: Binaries and sources Releases 

有详细的代码实例

PHP: PHP 8.0.0 Release Announcement 

PHP: PHP 8.1.0 Release Announcement

one by one to experience.

2. 代码参见:

GitHub - ningxiaofa/php-8.0-learning-and-testing: Learing and testing PHP 8.0

3. 目录结构:

4. 测试环境:

// Docker:

// CPUs: 2

// Memory: 4.00 GB

// Swap: 1 GB

// 分别使用PHP镜像如下:

// 8.0-cli

// 7.4-cli

// 5.6-cli

// 运行容器测试:

5. 其中, 关于性能比较的测试

// 冒泡排序: range(1, 1000);

// PHP 8 with jit:

// 执行命令: php -dopcache.enable_cli=on -dopcache.jit=1205 -dopcache.jit_buffer_size=64M compute.php

// float(0.7394640445709229)

// float(0.7135009765625)

// float(0.7007088661193848)

// avg_time: 0.7179s

// PHP 8 without jit:

// 执行命令: php compute.php

// float(2.2466330528259277)

// float(2.279315948486328)

// float(2.2002217769622803)

// avg_time: 2.2420s

// PHP 7.4

// float(2.3808090686798)

// float(2.4190850257874)

// float(2.4786019325256)

// avg_time: 2.4261s

// PHP 5.6

// float(19.611121892929)

// float(19.957134008408)

// float(19.330636024475)

// avg_time: 19.6329.s

// 调整 CPUs为 4, 其他不变, 输出结果:

// 8.0 with jit

// float(0.7168970108032227)

// float(0.7139320373535156)

// float(0.6942658424377441

// avg_time: 0.7084s

// 8.0 without jit

// float(2.1809449195861816)

// float(2.258208990097046)

// float(2.3160738945007324)

// avg_time: 2.2517s

// 7.4

// float(2.2731828689575)

// float(2.2631080150604)

// float(2.3577010631561)

// avg_time: 2.2980s

// 5.6

// float(19.071826934814)

// float(19.167896032333)

// float(19.43839597702)

// avg_time: 19.2260s


 

// 性能结论:

// 1. PHP 8 with jit 是 PHP 8 without jit 的3倍作用性能

// 2. PHP 5.6 >> PHP 7.4 >> PHP 8 without jit >> PHP 8 with jit, 在计算密集型场景下, 性能提升是很明显的.

// 3. 在上面的计算量内, 增加 CPUs, 对 PHP 8几乎无影响, 对其他版本有少许影响, 性能有所提升. Note: 因为前者计算过程中, cpu使用率并未到100%, 后者则超过了100%, cpus一定程度上对其有所限制.

// 4. 典型场景下, 并未测试, 性能请参考官方文档.

附上:

...

另外:

PHP 8.0 - window 10下[含Docker方式]安装 - 学习/实践_穿素白衫的少年的博客-CSDN博客_php8 windows  

3. 思考总结

语言最终不过是工具而已, 有时候不应该使用语言将自己隔离起来, 而应该追寻共通的东西, 但是这些却又是建立在熟悉语言的基础上, 所以, 工具还是要熟悉, 熟练使用工具, 可以高效快速地完成工作需求,  从而节省时间, 去做其他的事情, 不是挺好的吗?!

后续补充

...

3.问题/补充

1.解决vscode 中vscode报的语法错误.

解决之前:

解决办法:

将C:\Users\williamning\AppData\Roaming\Code\User\settings.json文件中, php的 php.validate.executablePath 改为 php 8.0 的执行路径即可, 如下:

改为下面:

修改完之后:

正常解决~~

Note:

这里如果vscode中安装了插件, 如: PHP Intelephense  // 一个为 php语法 提供智能提示的插件, 样式很好看, 如下:

但该插件处于启动状态, 则会报警告, 如下:

解决办法:

将其禁用, 或者无视警告 [暂时面临一个选择]. 应该是因为该插件还未支持 php 8.0语法.

相信要不了多久, 插件就会升级支持.

这里, 个人还是选择暂时先将其禁用, 因为其他文件中报的问题太多~~~ 有些不忍直视.😅

4.参考

PHP8会有什么改变? - 知乎  //PHP8会有什么改变?

PHP 8 确认支持 JIT - OSCHINA - 中文开源技术交流社区  //PHP 8 确认支持 JIT

PHP的性能演进(从PHP5.0到PHP7.1的性能全评测) - 风雪之隅  //php8有望在2020年发布 | 海墨 - PHP的性能演进(从PHP5.0到PHP7.1的性能全评测)

JIT被批准用于PHP 8,以提高CPU性能_Linux新闻_Linux公社-Linux系统门户网站 //JIT被批准用于PHP 8,以提高CPU性能

PHP 8.0 正式版发布,这是你没有学过的全新版本!JIT 计算性能提升巨大,原生注解属性助力!_哔哩哔哩_bilibili   // php 8.0 上机体验

PHP 8.0 - window 10下[含Docker方式]安装 - 学习/实践_穿素白衫的少年的博客-CSDN博客_php8 windows   // PHP 8.0 - window 10下安装 - 学习/实践

【宇润】4-PHP8 FFI、JIT和Go的计算性能大战-PHP转Go语言之前你得先了解这些_哔哩哔哩_bilibili   // 【宇润】4-PHP8 FFI、JIT和Go的计算性能大战-PHP转Go语言之前你得先了解这些

后续补充

...

  • 0
    点赞
  • 0
    收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
©️2022 CSDN 皮肤主题:代码科技 设计师:Amelia_0503 返回首页
评论

打赏作者

穿素白衫的中少年

你的鼓励将是我创作的最大动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值