PHP7.4 会对生态建设带来改变吗

新特性很多,我感兴趣的是预加载(preload)特性。

会对扩大php相关生态有积极影响吗?

《L03 构架 API 服务器》
你将学到如 RESTFul 设计风格、PostMan 的使用、OAuth 流程,JWT 概念及使用 和 API 开发相关的进阶知识。
《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
讨论数量: 27

不知道,对性能有多大提升

4年前 评论

不知道预加载特性支不支持windows.反正我给客户部署网站都是在Windows上面

4年前 评论
chinatang (作者) 4年前
JerryBool 4年前
Dragonbuf 4年前
chinatang (作者) 4年前
sanders 4年前
sanders 4年前
直面苦痛的人生 4年前
chinatang (作者) 4年前
直面苦痛的人生 4年前

FPM多少决定并发多少,能优化就好了。

4年前 评论

@jobsssss 比如微服务,PHP作为网关,平均每接口需要调用3个微服务,这时候就是瓶颈。

4年前 评论

我個人認為 Arrow Functions 可以進一步優化一些 Helper Functions

例如

<?php

$arr = [1, '2', 3, '4', 5];

Arr::where($arr, fn($value) => is_string($value)); 

$min = 3;

Arr::where($arr, fn($value) => $value > $min);
4年前 评论

有opcache 现在有预加载文件,PHP的性能是不是会越来越好?

4年前 评论

@ChiVincent 不带括号的简写语法糖,很不习惯

4年前 评论

按道理来讲预加载应该是质的飞跃吧

4年前 评论

前排围观

4年前 评论

预加载,
可以用于配置,框架初始化,vendor整个目录预加载可能太消耗内存,可以挑选必需、或者热门类库,选择性预加载。
类属性类型,
这个特性应该才会对原有代码带来变化,可能所有热门composer包都会跟进,无论是php7.4还是以后的php8jit,因为声明类型后,不可变化,可以更好编译优化
https://www.jianshu.com/p/eb4dce62edf3

4年前 评论

坐等官方什么时候支持了

4年前 评论

@selden 跟ts一样啊 严格数据类型

4年前 评论

同看好 preloading,但不知移植成本

4年前 评论
sanders

其实不太明白预加载,php很早就有opcache扩展用来预加载opcode到内存,这次仅仅是放到内核里了?


看了一下原文,才有所了解,还是用opcache 估计会有新的方法,我猜可能是在启用fpm的时候加载代码,不过这要是一台机器上跑多个带一大堆php项目,内存能吃得消吗?

4年前 评论
LDL1023

国外朋友对 preload 的测试
https://github.com/composer/composer/issue...

4年前 评论

学习swoole吧,打开一片新天地

4年前 评论

@江湖大虾仁 @jobsssss

刚看到7.4的预加载功能,确实是有必要的,如果能有性能提升当然更好。

因为前段日子因为没有预加载出过问题,所以自己使用 opcache_compile_file 实现了“预加载”。实现方法就在服务上线前,遍历整个项目的php文件,调用 opcache_compile_file 将他们放到opcache中。

出现的问题是,大流量的php服务冷启动上线的时候,会出现cpu直接打满的情况。原因就是冷启动的时候,框架文件太多,都还没有种上opcache。当运行一段时间以后随着opcache生效的文件越多,cpu会下降下来,直到稳定。

这种情况在生产环境是不允许出现的,毕竟会出现一段时间的502,所以就自己实现了“预加载”。看到7.4官方就自带了,那就更好了。

不过看到预加载的例子,居然也是需要自己调用 opcache_compile_file ,对比目前自己做的预热好像没啥区别。不过不用专门写个接口来执行 opcache_compile_file 进行预热了,ini配置好就自动执行了。

4年前 评论

@江湖大虾仁 我们生产环境是关闭opcache的检查的,也就是永久生效。那么唯一的区别就是内存拷贝了吧。

4年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!