PHP缓存基础

警告:此帖子过时,可能无法反映当前的最新状态

PHP相当快,并且随着PHP 7的发布,它的运行速度大大提高,有时平均速度是PHP 5.5的2倍。 HHVM有时甚至更快。也就是说,缓存对于PHP应用程序的速度至关重要。

OP缓存

OPCache是一种特殊的缓存机制,用于存储PHP文件的预编译版本。执行后,一个PHP文件被编译为字节码,一旦完成此过程,字节码便被执行。

99.9%的操作码在几天之内都是相同的,因为一个文件可能几个月都不会改变,但默认情况下,PHP每次都会重新编译一次。

为了改善这一点,请使用OPCache。 OPCache通过将预编译的脚本字节码存储在共享内存中来提高PHP的性能,而无需PHP在每个请求上加载和解析脚本。

自PHP 5.5起,它已捆绑在内核中,只需安装它即可使我们获得极大的速度改进,这就是废话。

OPCache文档

铜铜合金

APCu是没有操作码缓存的旧APC,现在由OPCache正式提供。它是一个用户缓存,这意味着必须由PHP代码显式使用它才能利用它,而OPCache在安装后即可完成所有工作。

当执行昂贵的操作(如读取文件或获取网络资源)时,可以将结果存储在用户缓存中,以加快以后对同一对象的请求。

APCu的唯一缺点是,它对运行它的计算机是本地的,对PHP进程和系统是本地的。这意味着,如果您将PHP用作FastCGI进程(例如Nginx和php-fpm),则每个PHP进程都会拥有自己的缓存。

除非您希望在多个服务器或进程上运行您的应用程序,否则就可以了。否则,Memcached和Redis可能是一个很好的解决方案。

使用APCu

<?php
function getData() {
    $data = apc_fetch('some_data');
    if ($data === false) {
        $data = $this->getSomeData();
        apc_add('some_data', $data);
    }
    return $data;
}
?>

APCu文档

APC,XCache,Memcached,Redis等

由于OPcache现在是内置的,并且键值缓存现在是APCu的一部分,因此APC不再重要。不再建议使用XCache,请改用APCu。 Memcached和Redis可以替代APCu,在独立系统上不太方便,因为它们必须单独设置,与APCu相比并没有真正的优势,但是如果您运行多个PHP进程或设置系统网络(因为它们都可以依靠),则很方便在中央缓存位置上。