在工作中,我们最近开始为我设计一个“大规模”的应用程序(我们正在设计为每天提供数百万次点击的潜力)。其中一个高级开发人员和系统管理员已在服务器上设置了memcache。
根据我的理解,Memcache会在内存中保存查询结果和某些表格,并保留所有内容,并保留所有内容。
memcache的缺点似乎是我无法为我的生活设法在我的本地开发环境中设置它。我已经遵循了一些关于如何为自己编译它的不同指导。大多数,如果不是所有步骤似乎都正常工作但在PHPLoad上出现此错误:
[11-Sep-2010 16:02:30] PHP Warning: PHP Startup: Unable to load dynamic library '/Applications/MAMP/bin/php5.3/lib/php/extensions/no-debug-non-zts-20090626/memcached.so' - dlopen(/Applications/MAMP/bin/php5.3/lib/php/extensions/no-debug-non-zts-20090626/memcached.so, 9): image not found in Unknown on line 0
不是主要问题,但是如果你已经能够在Snow Leopard上为MAMP 1.9编译Memcache,请告诉我这个技巧。
我的主要问题是关于各种网络缓存技术之间的差异。我已经看到提到Memcache,APC和Xcache(这里:Cache results of a mysql query manually to a txt file),但不知道每个之间的优缺点和差异。
在我看来,Memcache的优势在于该项目的主要开发者和我们的系统管理员选择的那个。在Mac上尝试设置和编译时,它具有完全的foobar 缺点。 : - ^)
任何能够列举其他cachine技术(或者甚至是其中一种)的优缺点的人都希望听到。它们最适合使用的地方,如何最好地使用它们。等等。
我认为这些都是有用的信息。
非常感谢您花时间扩展我的知识。 - 亚历克斯。
答案 0 :(得分:31)
首先,列出opcode cachers for php。
第二个Memcache / MemcacheD不是Opcode Cacher。它是一个分布式内存缓存系统。它不会提高PHP代码的速度/性能。它只能用于存储数据。
APC,EAccelerator,XCache和其他非分布式,这意味着您只能在本地Web服务器上存储数据。但是所有这些都是操作码cachers,可以提高PHP应用程序的性能。大多数,不包括EAccelerator(在当前版本中)也可以存储数据。
我通常选择APC作为操作码cacher(据报道它将被包含在PHP 6的核心中)。但是,如果我的网站也有多个网络服务器,我也会使用MemcacheD。
编辑1 我同意在MAMP上设置APC,Memcache非常烦人。然而,有一些教程处理这样的问题。
编辑2 此外,关于您的应用程序的最佳Opcode Cacher,取决于您使用的服务器。有些系统可以更好地工作。它还取决于您的应用程序的大小和规模,以了解牧师的表现。
编辑3 非常有趣article here关于比较几个不同的牧师的表现。 (本文似乎是在2006年编写的,不应该真正用于当前参考)
答案 1 :(得分:2)
APC是一个操作码缓存。它将存储已解析的PHP代码,以便每次都不需要解析PHP文件。
Memcache是一个数据缓存。它会将数据存储为键值对。