28

PHP 5.5 默认包含 zend opcache,这基本上意味着几乎没有人会使用 APC。

但是用什么来代替 APC 的用户数据缓存部分(apc_store & apc_fetch & 类似)?

我真正喜欢使用 APC 用户数据缓存的一个用例是静态资产(javascript、css ..)的“版本”。每当我引用静态文件时,我会将其内容的哈希添加到 url(例如 <script src=/script.js> 将变为 <script src=/script.js?v=hash>),以便浏览器始终使用当前版本并且可以永久缓存它。

我可以想象使用 redis 或 memcache 来存储静态文件的哈希值,但是通过网络或套接字询问另一个进程只是为了获取文件内容的哈希值似乎很愚蠢。APC 用户数据缓存(位于共享内存中,访问它的速度几乎与访问 php 变量一样快)似乎正是用于此类数据的正确方法。

所以问题是:在 php 5.5 中使用什么来缓存少量数据而不是 APC?

4

4 回答 4

29

从 PHP 5.5 开始,APC 用户数据存储被单独打包为PECL APCu

这允许您使用所有用户缓存函数,例如apc_store()。它还将返回true-extension_loaded('apc')这意味着所有依赖于 APC 的库都将与 PHP 5.4 类似地工作。

于 2014-01-09T09:26:56.203 回答
6

我最近从 php 5.3 升级到 php 5.5 beta 2 后处理了这个问题。

我查看了 Memcache 和 Redis。根据您询问的对象,两者之间的性能大致相同。有人声称 Redis 稍微快一些。但是,Redis 的功能比 Memcahe 多得多,所以我决定使用 Redis。

对于 PHP 客户端,我选择了 Phpredis 而不是 Predis。Phpredis 是一个 C 扩展,而 Predis 是一个纯 PHP 实现。因此,Phpredis 通常更快。

我主要使用 Redis 来缓存和检索序列化对象。我开始使用 APC 在 PHP 5.3 中开发我目前正在开发的项目。我将继续使用 php 5.5 和 Redis 开发该项目。虽然我没有基准统计数据,但我可以告诉您该应用程序“感觉”更快。这可能是由于 php 5.5 中的性能增强,而不是 APC 用户缓存和 Redis。不管怎样,我很高兴我的选择。

我希望这会有所帮助。祝你好运,黑客愉快:-)

于 2013-08-03T18:06:08.110 回答
0

没有什么可说的了。你已经得到了正确的答案。我想我可以为您提供一个教程链接,以指导如何在 Windows 上的 XAMPP 上为 php 5.5 和 5.6 下载和安装 APCu:

链接从 5.3 及更高版本下载用于 php 构建的 APCu: 下载 APCu 不同版本

安装教程: 安装说明(最新版本应该在文件列表的最底部 - 使用这个)

另请记住,您将有两个选项可供选择,例如64 或 84版本以及nts 或 tsvc9 或 vc11(在您的情况下可能会有所不同),当然还有正确的 PHP 版本(在我的情况下我的 xampp 将是 PHP 5.6)。

例子:

如果你想选择正确,你必须先运行 phpinfo() 并检查这些参数:

Zend 扩展构建架构

在我的情况下,这将是:

[Zend Extension Build:] API220131226,TS,VC11

[Architecture:] x86

这意味着在我的情况下,我将不得不选择在文件名中包含这些参数5.6、TS、 VC11、86 的 ACLu

要下载的文件名:php_apcu-4.0.7-5.6-ts-vc11-x86.zip

希望能为您解决问题。


关于不同 PHP 构建的一些附加说明:

ts 与 nts 的区别: TS 是指支持多线程的构建。NTS 是指仅单线程构建。TS 二进制文件的用例涉及与作为模块加载到 Web 服务器中的多线程 SAPI 和 PHP 的交互。对于 NTS 二进制文件,广泛的用例是通过 FastCGI 协议与 Web 服务器交互,不使用多线程(但也包括 CLI)。

vc9 vs vc11 vs vc14 的区别: 较新的 PHP 版本是使用 VC9、VC11 或 VC14(分别为 Visual Studio 2008、2012 或 2015 编译器)构建的,并包括性能和稳定性方面的改进。

  • VC9 版本要求您安装 Visual C++ Redistributable for Visual Studio 2008 SP1 x86 或 x64
  • VC11 版本需要安装 Visual C++ Redistributable for Visual Studio 2012 x86 或 x64
  • VC14 版本需要安装 Visual C++ Redistributable for Visual Studio 2015 x86 或 x64

差异 86 与 64: Windows 的 PHP 的 x64 版本应被视为实验性版本,尚不提供 64 位整数或大文件支持。

于 2015-11-15T04:42:25.710 回答
-1

看看 lighttpd 的作者提供的 XCache 操作码缓存器。它同时支持 php 5.5 和用户数据缓存:http: //xcache.lighttpd.net/wiki/XcacheApi

我自己没有尝试过(仍在使用 APC 和 php 5.4)。

于 2013-12-13T09:47:46.037 回答