apc php7,PHP 7.4 新功能一览之预加载

在 PHP 5 年代,为了加快 PHP 的执行效率,生产机都会安装 APC 或者 Zend OpCache 之类的扩展,它们的用途都是将某个 PHP 脚本第一次运行之后的 Opcode(编译之后的中间代码)缓存在内存,这个脚本在第二次运行的时候就可以跳过编译过程。

PHP 7.4 新增的预加载功能,听上去和当年 APC 做得事情很像,但实际还是有差别的。从使用角度来说,预加载功能不再判断源代码是否有更新。如果有新代码发布到生产服务器,必须重启服务;而当年 APC(当然现在的 OPcache 也类似)可以通过选项『检查源文件是否更新』来控制这一行为。更多的不同,体现在实现上。

APC 是通过共享内存缓存(shared memory cache)来缓存 Opcode 的,这也是为什么 APC 不但可用做 Opcache 缓存,也可以利用共享内存来缓存开发者想要缓存的数据。不过实际运行代码的时候,PHP 依然需要加载这些缓存到代码运行上下文里;另外由于 APC 的机制是只缓存运行过的 PHP 代码,即每个 PHP 文件都是需要单独被缓存的,所以类与类之间的关联并不保存,还是需要在运行时来决定。

记得曾几何时,Symfony 就采用将常用文件全部拼接成一个超大 PHP 的文件的方式,以提高框架加载速度,并且官方对此的描述是,即使不开 APC,此做法提升的性能也非常显著。这下好了,在 PHP 7.4 里,你只需要设置选项 opcache.preload,指向一个 PHP 脚本,在此脚本里通过 include/require/opcache_compile_file 一些文件,来决定要将什么 PHP 脚本包含在预加载过程中。(估计这个文件实际我们都不用关心,相信 composer 很快就会跟上的)

df83231bee01dd4e52438731a8a0385e.png

写作累,服务器还越来越贵

求分担,祝愿好人一生平安

天使打赏人

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值