PHP 7.4的Opcache预加载功能如何实现高效代码执行?
- 内容介绍
- 文章标签
- 相关推荐
本文共计2223个文字,预计阅读时间需要9分钟。
在PHP 7.4中,增加了对预加载的支持,这是一个能显著提升代码性能的特性。简单来说,这是它的工作方式:
+ 为预加载文件,需编写一个自定义PHP脚本+ 该脚本应在服务器启动时执行
在PHP 7.4中,添加了对预加载的支持,这是一个可以显著提高代码性能的特性。
简而言之,这是它的工作方式:
● 为了预加载文件,您需要编写一个自定义PHP脚本
● 该脚本在服务器启动时执行一次
● 所有预加载的文件在内存中都可用于所有请求
● 在重新启动服务器之前,对预加载文件所做的更改不会产生任何影响
让我们深入了解它。
#Opcache
虽然预加载是建立在opcache之上的,但它并不是完全一样的。Opcache将获取您的PHP源文件,将其编译为“ opcodes”,然后将这些编译后的文件存储在磁盘上。
您可以将操作码看作是代码的底层表示,在运行时很容易解释。因此,opcache会跳过源文件和PHP解释器在运行时实际需要之间的转换步骤。巨大的胜利!
但我们还有更多的收获。Opcached文件不知道其他文件。如果类a是从类B扩展而来的,那么仍然需要在运行时将它们链接在一起。此外,opcache执行检查以查看源文件是否被修改,并将基于此使其缓存失效。
因此,这就是预加载发挥作用的地方:它不仅将源文件编译为操作码,而且还将相关的类、特征和接口链接在一起。然后,它将这个“已编译”的可运行代码blob(即:PHP解释器可以使用的代码)保存在内存中。
现在,当请求到达服务器时,它可以使用已经加载到内存中的部分代码库,而不会产生任何开销。
本文共计2223个文字,预计阅读时间需要9分钟。
在PHP 7.4中,增加了对预加载的支持,这是一个能显著提升代码性能的特性。简单来说,这是它的工作方式:
+ 为预加载文件,需编写一个自定义PHP脚本+ 该脚本应在服务器启动时执行
在PHP 7.4中,添加了对预加载的支持,这是一个可以显著提高代码性能的特性。
简而言之,这是它的工作方式:
● 为了预加载文件,您需要编写一个自定义PHP脚本
● 该脚本在服务器启动时执行一次
● 所有预加载的文件在内存中都可用于所有请求
● 在重新启动服务器之前,对预加载文件所做的更改不会产生任何影响
让我们深入了解它。
#Opcache
虽然预加载是建立在opcache之上的,但它并不是完全一样的。Opcache将获取您的PHP源文件,将其编译为“ opcodes”,然后将这些编译后的文件存储在磁盘上。
您可以将操作码看作是代码的底层表示,在运行时很容易解释。因此,opcache会跳过源文件和PHP解释器在运行时实际需要之间的转换步骤。巨大的胜利!
但我们还有更多的收获。Opcached文件不知道其他文件。如果类a是从类B扩展而来的,那么仍然需要在运行时将它们链接在一起。此外,opcache执行检查以查看源文件是否被修改,并将基于此使其缓存失效。
因此,这就是预加载发挥作用的地方:它不仅将源文件编译为操作码,而且还将相关的类、特征和接口链接在一起。然后,它将这个“已编译”的可运行代码blob(即:PHP解释器可以使用的代码)保存在内存中。
现在,当请求到达服务器时,它可以使用已经加载到内存中的部分代码库,而不会产生任何开销。

