【问题标题】:How to check if APC opcode cache is working fine in PHP?如何检查 APC 操作码缓存在 PHP 中是否正常工作?
【发布时间】:2011-06-28 09:53:30
【问题描述】:

我正在使用启用了 APC 缓存的 PHP:

apc.cache_by_default => On
apc.enabled => On
apc.ttl => 7200

现在我怎么知道它是否 100% 使用操作码缓存。

例如,假设我有这个 PHP 文件:

<?php
echo "Hi there";
?>

现在运行这个文件后,让我们把它改成echo "Bye there";

由于 7200 秒的 TTL 还没有结束,它不应该回显“Hi there”吗?我对吗?如果是这样,为什么它会回响“Bye there”?如果我错了,如何在更改文件后强制它使用操作码缓存?

【问题讨论】:

    标签: php apc opcode


    【解决方案1】:

    我能找到的判断 APC 是否正常工作的最简单方法是创建一个包含此代码的新 PHP 文件...

    <pre><?php
    print_r(apc_cache_info());
    

    它将 apc_cache_info() 的内容转储到屏幕上(请注意,在大型实时站点上,这可能是 大量 数据!)。

    每次重新加载此 PHP 文件时,您应该看到 num_hits 增加,这意味着操作码缓存已被使用。未命中表明 APC 必须从源代码重新编译文件(通常在每次更改时完成)。


    要获得更好的信息界面,您可以使用 APC 附带的 apc.php 文件。我使用此控制台命令将其复制到我的网站目录(您的文件夹位置可能不同)...

    cp /usr/share/doc/php-apc/apc.php /usr/share/nginx/html/apc-stats.php
    

    在浏览器中运行此文件会为您提供漂亮的颜色和图表!

    查看此链接了解更多信息:
    http://www.electrictoolbox.com/apc-php-cache-information/

    【讨论】:

      【解决方案2】:

      我认为您不会想在生产环境中使用它,但您始终可以使用 apc_cache_info()

      function is_file_cached($file) {
          $info = apc_cache_info();
          foreach ($info['cache_list'] as $cache) {
              if ($cache['filename'] == $file) return true;
          }
          return false;
      }
      

      请注意,这将遍历每个缓存的文件以检查指定文件,因此效率不高。

      就您的具体问题而言,APC 会在文件更改时自动使缓存失效。因此,当您编辑文件时,APC 会默默地检测到这一点并提供新文件。您可以通过设置apc.stat = 0 来禁用此功能。

      【讨论】:

        【解决方案3】:

        通常,APC 会检查请求的文件是否在缓存后被修改。您可以使用apc.stat 来控制它。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2014-01-11
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2010-12-02
          • 1970-01-01
          • 2012-04-05
          相关资源
          最近更新 更多