代码之家  ›  专栏  ›  技术社区  ›  jodonnell

为什么apc_Store()会返回false?

  •  16
  • jodonnell  · 技术社区  · 16 年前

    php.net上的文档对于apc写入失败的原因非常零散。哪种情况会导致对apc_store()的调用失败?

    有足够的可用磁盘空间,并且故障是零散的。有时候商店的运作会成功,有时候会失败。

    9 回复  |  直到 14 年前
        1
  •  6
  •   Nir Levy    16 年前

    内存不足(分配给APC的内存,即)

        2
  •  46
  •   Kees van Dieren    16 年前

    对于php cli,需要使用另一个选项启用它: apc.enable_cli=on(启用)

    在我的情况下,它在从WebBrowser运行时起作用,但在使用php cli执行相同的操作时不起作用。

        3
  •  8
  •   Layke    14 年前

    我也有同样的情况。

    我把我的代码从使用cron作业迁移到使用gearman工人,这是通过supervisor管理的。

    一切都破裂了。我无法让缓存通过apc工作,必须恢复到使用filebase缓存。

    最终我发现,当我使用cron作业时,我将通过wget而不是命令行加载每个页面。这一区别意味着通过命令行加载PHP脚本的Supervisor将无法工作,因为默认情况下,APC将无法通过命令行工作。

    修复…

    apc.enable_cli=On

        4
  •  4
  •   Paul    16 年前

    这个愚蠢的(出于某种原因关闭了)bug是我的问题:

    http://pecl.php.net/bugs/bug.php?id=16814

    必须回滚到APC版本3.1.2才能使APC工作。在php.in i中不修改apc设置有帮助(我使用的是mac os 10.5,使用的是apache 2,php 5.3)。

    对于我来说,这个测试脚本显示了3.1.2的3个“trues”和3.1.3p1的true/false/true。

    var_dump(apc_store(“test”,“one”)); var_dump(apc_store(“test”,“two”)); var_dump(apc_store(“diff”,“thr”));

        5
  •  2
  •   byterussian    16 年前

    http://php.net/manual/en/apc.configuration.php

    php.ini上的apc.ttl和apc.user_ttl设置:

    将此值设为零意味着APC的缓存可能会被过时的条目填满,而新的条目不会被缓存。

        6
  •  1
  •   Greg    16 年前

    磁盘空间不足或对存储目录的权限被拒绝?

        7
  •  1
  •   Tom    16 年前

    除了Greg所说的之外,我还要补充一点,配置错误可能会导致这种情况。

        8
  •  1
  •   ty91011    15 年前

    如果该特定密钥已经存在,并且您试图在TTL过期之前再次写入该密钥,则APC_存储将失败。因此,您可以忽略返回false,因为它确实失败了,但缓存仍然存在。如果你想解决这个问题,开始使用apc_-add。 http://php.net/manual/en/function.apc-add.php

        9
  •  1
  •   jw01    14 年前

    安装了Ubuntu10.04和Debian Stable的版本中有一个bug。如果用此版本替换包: http://packages.debian.org/sid/php-apc (3.1.7)它按应该的方式工作。

    推荐文章