【发布时间】:2013-06-02 00:37:24
【问题描述】:
我正在使用 Yii 框架开发一个应用程序。应用程序将具有多个服务器配置。我阅读了有关 Memcache 和 APC 的信息。
你能告诉我在 APC 和 Memcache 之间什么更适合 Yii 吗?
【问题讨论】:
我正在使用 Yii 框架开发一个应用程序。应用程序将具有多个服务器配置。我阅读了有关 Memcache 和 APC 的信息。
你能告诉我在 APC 和 Memcache 之间什么更适合 Yii 吗?
【问题讨论】:
虽然 APC 和 Memcache 用于不同的目的,但您应该同时使用。由于您有多个服务器,memcache 将有助于跨服务器缓存和维护用户数据状态,而 APC 将有助于加快脚本执行时间。
APC 将纯 PHP 代码编译成机器码并保存,以便在以后的所有请求中,可以节省编译时间。这里的链接可以让你了解如何在 Yii 中使用它 - http://www.yiiframework.com/wiki/312/getting-the-most-out-of-apc-for-yii/
【讨论】:
正如其他人所说,APC 用于两个目的:操作码缓存和用户变量缓存。自 PHP 5.5 起,OpCache 默认开启,比 APC 更优化;因此,OpCache 将用于 OpCode 缓存。 如果您想将 APC 用于使用 PHP 5.5 的应用程序,则应仅将 APCu 用于用户变量缓存。
MemCache 与 APC 一样用于变量缓存,但是当您计划扩展应用程序时,优势就来了。如果你要部署1台以上的PHP应用服务器【水平扩展】,并且如果你没有使用数据库进行PHP Session Management,那么如果你使用APC进行缓存,会有很多你不知道的问题您的代码所在的 APC 服务器。而 MemCache 是分布式缓存引擎,即即使您部署了多个 MemCache 服务器,但 MemCache 仍然可以将其作为缓存数据的位置。
【讨论】:
APC 用于操作码,但 Memcache 仅用于应用程序缓存,例如缓存数据库。
【讨论】:
APCu 不与其他服务器共享缓存,但速度更快。
内存缓存 可以与其他服务器共享,速度较慢。
Memcached 是分布式缓存系统,而 APC 是非分布式 - 主要是操作码缓存。
如果(且仅当)您的 Web 应用程序必须运行在不同的 Web 服务器上(负载平衡),您必须使用 memcache 进行分布式缓存。如果没有,请坚持使用 APC 及其缓存。
您应该始终使用操作码缓存,APC 就是(APC 也将集成到 php6 iirc,所以为什么不现在开始使用它)。
如果您有 2 个或更多 Web 服务器 (apache/nginx) 用于同一个 Drupal 站点,您将需要 Memcached。如果您在单台机器上运行,那么 APCu 将是最快的。 无论如何,您都希望打开 OPcache。
参见:
Memcached vs APC which one should I choose? https://drupal.stackexchange.com/questions/117932/difference-between-apc-memcached-and-how-both-can-be-used-for-cache-bins
【讨论】: