PHP APC潜在缓存猛烈抨击密钥

时间:2011-02-13 09:13:49

标签: php apache2 apc

我在尝试使用apc_store()时收到此错误。我搜索了它,看到这是 APC timebomb bug ,并看到一些修复建议将apc.slam_defense = Off;添加到php.ini。

我需要知道是否因为编程错误而发生了这种情况,如果是的话,我该如何修复它。

这是代码段:

if ($data = apc_fetch("foo")) {
    $an_array = $data;
} else {
    /* couple of lines */

    apc_store("circles", $an_array); // This is where I get the error
}

此脚本将在我部署的系统中频繁调用。

我希望我提供了足够的信息

提前致谢

4 个答案:

答案 0 :(得分:28)

apc.write_lock = 1中设置apc.slam_defense = 0php.ini可以解决问题。

答案 1 :(得分:15)

从APC 3.1.3开始,似乎存在一个错误(http://pecl.php.net/bugs/bug.php?id=16814),当正在进行防御时以及当您尝试编写已存在的密钥时会发出警告。
似乎还没有修复。

答案 2 :(得分:5)

最新版本的APC似乎解决了问题,您可以使用PECL更新APC

pecl upgrade apc

答案 3 :(得分:2)

这些说明将根据PHP的安装方式而有所不同。

但是,在您添加/etc/php5/cgi/conf.d/extensions.ini之后,在apc.ini文件(或php.iniextension=apc.so)中,您可以禁用强力防御

例如,这是我使用的配置。

[apc]
apc.enabled=1
apc.shm_size=48M
apc.num_files_hint=10000
apc.user_entries_hint=10000
apc.max_file_size=5M
apc.stat=1
apc.enable_cli=On
apc.write_lock = 1 
apc.slam_defense = 0 # <----- This is the Important Setting