PHP 5.5默认包含zend opcache,这基本上意味着几乎没有人会使用APC。
但是使用什么代替APC的用户数据缓存部分(apc_store& apc_fetch& similar)?
我真正喜欢使用APC用户数据缓存的一个用例是静态资产(javascript,css ..)的“版本”。每当我引用静态文件时,我都会将其内容的哈希值添加到url中(例如< script src = / script.js>将成为< script src = / script.js?v = hash>),以便浏览器始终使用当前版本,可以永久缓存它。
我可以想象使用redis或memcache存储静态文件的哈希值,但是通过网络或套接字询问另一个进程只是为了得到文件内容的哈希值似乎很愚蠢。 APC用户数据缓存(在共享内存中并访问它几乎与访问php变量一样快)似乎是用于此类数据的正确选择。
所以问题是:在PHP 5.5中使用什么来缓存小块数据而不是APC?
答案 0 :(得分:29)
从PHP 5.5开始,APC用户数据存储将单独打包为PECL APCu。
brew install php55-apcu
)apt-get install php5-apcu
)yum install php-pecl-apcu
)这允许您使用all user cache functions,例如apc_store()。它还会为true
返回extension_loaded('apc')
- 这意味着所有依赖于APC的库都将与PHP 5.4类似。
答案 1 :(得分: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相比。无论哪种方式,我都很满意我的选择。
我希望有所帮助。祝你好运和快乐的黑客: - )
答案 2 :(得分:0)
没什么好说的。你已经得到了正确的答案。我想我可以为你提供一个链接,教你如何在Windows上为XMPP下载和安装APCu for php 5.5和5.6:
链接从5.3及更高版本下载APCu for php build: download APCu different versions
安装教程: installation instructions(最新版本应位于文件列表的最底部 - 使用此版本)
另外请记住,您将有两个选项可供选择,例如 64或84 版本以及 nts或ts 和 vc9或vc11 < / strong>(在你的情况下可能会有所不同),当然还有正确的PHP版本(在我的情况下,我的xampp将是PHP 5.6)。
示例:
如果你想选择正确,你必须首先运行phpinfo()并检查这些参数:
Zend Extension Build 和架构
就我而言:
[Zend Extension Build:] API220131226,TS,VC11
[Architecture:] x86
这意味着在我的情况下,我将不得不选择ACLu wchich contains 在文件名中,这些参数 5.6,TS,VC11,86
要下载的文件名:php_apcu-4.0.7-5.6-ts-vc11-x86.zip
希望为你清楚的事情。
对不同PHP版本的一些附加解释:
差异ts vs 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编译器)构建,并包括性能和稳定性方面的改进。
差异86与64: 用于Windows的PHP的x64版本应该被认为是实验性的,并且还没有提供64位整数或大文件支持。
答案 3 :(得分:-1)
看一下lighttpd作者的XCache操作码cacher。它支持php 5.5和用户数据缓存:http://xcache.lighttpd.net/wiki/XcacheApi
我没有自己尝试(仍使用APC和php 5.4)。