PHP APC Potential Cache Slam Averted for Key

2019-03-17 09:00发布

I'm receiving this error while trying to use apc_store(). I googled it and saw that this was APC timebomb bug and saw some fixes which suggested adding apc.slam_defense = Off; to php.ini.

I need to know whether this has happened because of a programming error, and if yes, how to fix it.

This is the code segment:

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

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

This script will be called frequently in my deployed system.

I hope I've provided enough info

Thanks in advance

标签: php apache2 apc
4条回答
Bombasti
2楼-- · 2019-03-17 09:28

Setting apc.write_lock = 1 and apc.slam_defense = 0 in php.ini should fix the problem.

查看更多
在下西门庆
3楼-- · 2019-03-17 09:36

Last versions of APC seems to resolve problem, you can update APC with PECL

pecl upgrade apc
查看更多
干净又极端
4楼-- · 2019-03-17 09:36

These instructions will vary based on how PHP is installed.

But, in your /etc/php5/cgi/conf.d/extensions.ini file (or apc.ini, or php.ini) after you have added your extension=apc.so you can disable the slam defense

For example, this is my configuration that I use.

[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
查看更多
爷、活的狠高调
5楼-- · 2019-03-17 09:40

Since APC 3.1.3, it seems there is a bug (http://pecl.php.net/bugs/bug.php?id=16814), warning are made when slam defense is at on and when you try to write a key that already exists.
Does not seem to be fixed yet.

查看更多
登录 后发表回答