APC、APCu 和 Opcache 的区别?

Posted

技术标签:

【中文标题】APC、APCu 和 Opcache 的区别?【英文标题】:Difference between APC, APCu and Opcache? 【发布时间】:2015-05-25 02:32:53 【问题描述】:

我正在使用以下软件包运行 Web 服务器; php-apc 3.1.7-1 php5-fpm 5.3.10-1ubuntu3.10

但是,我在 Ubuntu 14.04 上构建了一个新服务器,似乎 php-apc 不再可用。

因此,APC 是我巨大流量(每天 10 万次独立访问)的生命服务器

我对 PHP 的缓存机制有点困惑。 新服务器包括以下软件包: php-apc 4.0.2-2build1 php5-apcu 4.0.2-2build1 php5-fpm 5.5.9+dfsg-1ubuntu4.7

phpinfo() 给我模拟的“apc”。据我了解,APC 已被 APCu 取代。

https://github.com/cepa/kickasscache 我正在为我的缓存运行这个免费的课程,在我的情况下它确实节省了很多 cpu/mem。 但我不明白这是否与 APCu 相同?

如果不是,我该如何设置正确的缓存? 因为我的新服务器资源有限,我需要一个解决方案。

php -v 返回

PHP 5.5.9-1ubuntu4.7 (cli) (built: Mar 16 2015 20:47:39)
Copyright (c) 1997-2014 The PHP Group
Zend Engine v2.5.0, Copyright (c) 1998-2014 Zend Technologies
    with Zend OPcache v7.0.3, Copyright (c) 1999-2014, by Zend Technologies

是不是默认开启了OPcache?

【问题讨论】:

APCu 是旧 APC 的用户数据组件,没有字节码缓存,因为 OpCache 现在是 PHP 的标准字节码缓存,但不提供用户数据缓存 @MarkBaker 感谢您的信息。有什么办法可以恢复旧的 APC 功能?我正在考虑降级我的操作系统、php 和其他软件包。 如果你将 PHP 降级到 5.5 以下,那么你将失去 OpCache 并且能够再次使用 APC 作为你的字节码缓存 请注意,不再积极支持 PHP 5.4,仅支持安全版本,这些将在 9 月 14 日之后停止 @MarkBaker 感谢您提供的重要信息。我想我发现了这个问题。整个故事是 php-apcu 包......我已经用 apt-get 安装了它,然后用 pecl upgrade 进行了升级。但是,如果我升级到 4.0.7,它会扼杀我的记忆。我现在对 4.0.2 很好。我在 pecl 升级时遇到了分段错误,但我忽略了它。所以底线:不要将 php-apcu 升级到 PECL。使用带有 apt 的股票版本 4.0.2 :) 【参考方案1】:

PHP 5.5 及更高版本不再需要 APC(或任何类似的字节码缓存扩展,如 XCache)。 PHP 开发人员直接将他们所谓的 OPCache 集成到产品的核心中。这不仅提供了更高的整体产品稳定性,而且受到 PHP 开发人员的官方支持。

如果您需要 APC 的特定功能但 OPCache 中没有(例如 APCu 功能),那么您应该在 php-dev 邮件列表中开始讨论。

最后,一个好的经验法则是只运行 php.net 主页上列出的 PHP 版本。虽然发行版通常会向后移植安全修复程序,但较新版本的 PHP 具有更多有用的功能。较新版本的 PHP 通常还具有显着的性能优势,可以让您绕过需要额外的 PECL 扩展,例如 APCu。

【讨论】:

请问出处可以吗? php.net/manual/en/book.opcache.php 表示它与 PHP 5.5+ 捆绑在一起,但在我全新安装的 PHP 5.6+ 上,/etc/php5/cli/php.ini/etc/php5/apache2/php.ini 的内容表示默认情况下它被禁用 (;opcache.enable=0)。 该条目开头的分号表示有问题的行已被注释掉,因此恕我直言,在您的 PHP 安装中启用了 opcache 。如果分号不存在,那么它确实会被禁用,所以你很好。 如果你使用APC的数据存储能力,可以安装php-apcu-bc,它使用APCu安装兼容功能。 @DaveMorton debian的方式是注释掉默认值,所以在这种情况下默认为0并且opcache默认是禁用的

以上是关于APC、APCu 和 Opcache 的区别?的主要内容,如果未能解决你的问题,请参考以下文章

如何清除 APCu 中的用户缓存?

PHP 缓存插件之 Zend Opcache ( 取代 APC )

sh 使用gd,mcrypt,mysql,pdo,apcu,opcache,bz2,zlib,ftp,pecl-geoip,imagemagick在CentOS上将PHP升级到5.6

我需要 memcached 和 Opcache 吗?

PHP5.5+启用OPCache

什么是 PHP 中的用户级缓存 APCu 扩展?