如何强制 Magento 使用 APC 缓存

Posted

技术标签:

【中文标题】如何强制 Magento 使用 APC 缓存【英文标题】:How to force Magento to use APC cache 【发布时间】:2011-08-09 02:22:02 【问题描述】:

我刚刚在我的主机帐户上安装了 Magento Commerce,但性能相当缓慢。为了帮助加快站点速度,我安装了 APC 缓存,但无法使其正常工作。我用过这些install instructions.

我按照所有步骤操作,似乎安装了 APC。没问题。当我检查 APC.php 时,它只显示 1 次命中和 1 次未命中缓存,这是不对的……让我觉得 APC 没有激活或未被使用。

我试图通过将以下内容添加到 /var/www/app/etc/local.xml 来确保 Magento 使用 APC。

            <cache>
                    <backend>apc</backend>
                    <prefix>alphanumeric</prefix>
            </cache>

非常感谢任何帮助。

【问题讨论】:

只是一个愚蠢的问题:您确实重新启动了服务器,不是吗? PHP ini 指令在 PHP 模块加载时加载,即当服务器第一次需要该模块时。 我在 MediaTemple 的 Gridserver 上运行,所以不需要重启 Apache。据说更改会立即生效。 【参考方案1】:

我建议您使用“字母数字”以外的唯一字符串。这样,如果您与其他用户或应用程序共享 APC,您的缓存就会有所不同。

您是否将 xml 节点放置在 local.xml 中的正确位置?上下文应该是这样的:

  ...
  <session_save><![CDATA[db]]></session_save>
  <cache>
    <backend>apc</backend>
    <prefix>ReplaceThisWithSomeUniqueString</prefix>
  </cache>
</global>

另外,请确保您在更改 local.xml 后执行了 rm -rf /var/www/var/cache/*

【讨论】:

Jonathan,我确认了 XML 节点的位置并更改了字符串。我仍然没有多少运气。我检查了 PHPInfo 文件,APC 确实出现在那里。不过,APCInfo 仍然没有显示任何对缓存的命中。【参考方案2】:

检查您的服务器日志并查找分段违规。当您只看到 1 次命中/未命中时,这肯定表明每次命中都会杀死服务器进程。这是 PHP 和 APC 版本的某些组合的问题。

如果您使用 mmap 后端,请尝试在不使用 mmap 的情况下再次编译 APC。 (我经常在使用 mmap 后端时遇到崩溃。)

一个问题,你用的是PHP 5.2还是5.3?

【讨论】:

【参考方案3】:

我遇到了同样的问题。在我的情况下,我以错误的方式设置了最大文件大小的参数。我没有在值后面附加M

所以我写了 apc.max_file_size=10 而不是 apc.max_file_size=10M。

【讨论】:

这是为我做的。许多“安装”说明已经足够老了,早于 APC 现在需要的 M/G 后缀。

以上是关于如何强制 Magento 使用 APC 缓存的主要内容,如果未能解决你的问题,请参考以下文章

如何在 APC 缓存中存储 PHP 会话?

APC 操作码缓存的工作原理

php可选缓存APC

PHP之APC缓存详细介绍(学习整理)

PHP 的 APC 用户数据缓存的完整替代方案?

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