我在尝试使用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
}
此脚本将在我部署的系统中频繁调用。
我希望我提供了足够的信息
提前致谢
答案 0 :(得分:28)
在apc.write_lock = 1
中设置apc.slam_defense = 0
和php.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.ini
或extension=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