什么是字节码缓存,我如何在PHP中使用一个


What is a bytecode cache and how can I use one in PHP?

我在网上搜索,了解到PHP代码可以通过编译来提高性能。但是怎么做呢?我可以同时编译过程和面向对象的PHP代码吗?

执行PHP脚本的基本思想分为两步:

  • 首先:PHP代码以明文形式编写,被编译为操作码
  • 然后:这些操作码被执行


当你有一个PHP脚本,只要它没有被修改,操作码将始终是相同的;因此,每次执行脚本时都执行编译阶段是一种浪费cpu时间的行为。

为了防止这种冗余编译,您可以使用一些操作码缓存机制。

一旦PHP脚本被编译成操作码,这些操作码将被保存在RAM中——并且在下次脚本被执行时直接从内存中使用;防止一次又一次地编译。


使用最多的操作码缓存是APC - Alternative PHP cache :

  • 查看PECL下载APC扩展
  • 它的手册

一旦APC已经安装和配置正确,没有什么你必须修改你的PHP代码:APC将缓存操作码,这就是全部——这个过程是完全不可见的应用程序。

但是怎么做呢?

容易。
首先,你必须做一些分析,以确保代码解析是你网站的瓶颈,所有其他明显的问题,如未优化的数据存储,缓慢的算法,数据挖掘和网络调用都得到了优化。

确定是否需要操作码缓存的最简单方法是将这一行放在最常用页面的顶部

$timer_start = microtime(1);

和最后这一行:

echo "Generated in ".(round((microtime(1) - $timer_start),4))." sec.";

如果时间大于0.01,您首先需要优化其他内容,因为您将注意到操作码缓存没有影响。