PHP的运行速度非常快,而随着PHP 7的发布,它的运行速度大大提高,有时平均速度是PHP 5.5的2倍。HHVM有时甚至更快。也就是说,缓存对于PHP应用程序的速度至关重要。
OPCache是一种特殊的缓存机制,用于存储PHP文件的预编译版本。执行后,一个PHP文件被编译为字节码,一旦完成此过程,字节码便被执行。
99.9%的操作码在几天之内是相同的,因为一个文件可能几个月都不会更改,并且默认情况下,PHP每次都会重新编译一次。
为了改善这一点,请使用OPCache。OPCache通过将预编译的脚本字节码存储在共享内存中来提高PHP的性能,而无需PHP在每个请求上加载和解析脚本。
自PHP 5.5起,它已捆绑在内核中,只需安装它即可使我们获得极大的速度改进,而不必使用它。
APCu是没有操作码缓存的旧式APC,现在由OPCache正式提供。它是一个用户缓存,这意味着您的PHP代码必须显式地使用它才能利用它,而OPCache在安装后就可以完成所有工作。
当执行昂贵的操作(如读取文件或获取网络资源)时,可以将结果存储在用户缓存中,以加快以后对同一对象的请求。
APCu的唯一缺点是,它对运行它的计算机是本地的,对PHP流程和系统是本地的。
这意味着如果您将PHP用作FastCGI进程(例如Nginx和php-fpm),则每个PHP进程都会拥有自己的缓存。
除非您希望在多个服务器或进程上运行您的应用程序,否则就可以了。否则,Memcached和Redis可能是一个很好的解决方案。
<?php
function getData() {
$data = apc_fetch('some_data');
if ($data === false) {
$data = $this->getSomeData();
apc_add('some_data', $data);
}
return $data;
}
?>
由于OPcache现在是内置的,并且键值缓存现在是APCu的一部分,因此APC不再重要。不再建议使用XCache,请改用APCu。Memcached和Redis可以替代APCu,在独立系统上不太方便,因为它们必须单独设置,与APCu相比并没有真正的优势,但是如果您运行多个PHP进程或设置系统网络(它们都可以依靠)则非常方便在中央缓存位置上。