2011-02-13 9 views
25

Recibo este error al intentar usar apc_store(). Lo busqué en Google y vi que esto era APC timebomb bug y vi algunas correcciones que sugerían agregar apc.slam_defense = Off; a php.ini.PHP APC Potencial Cache Slam Averted for Key

Necesito saber si esto ha sucedido debido a un error de programación, y en caso afirmativo, cómo solucionarlo.

Este es el segmento de código:

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

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

Este script se llama con frecuencia en mi sistema desplegado.

espero que he proporcionado suficiente información

Gracias de antemano

Respuesta

15

Desde APC 3.1.3, parece que hay un error (http://pecl.php.net/bugs/bug.php?id=16814), la advertencia se hacen cuando la defensa de golpe está en el y cuando intenta escribir una clave que ya existe
Parece que todavía no está arreglado.

28

Configuración apc.write_lock = 1 y apc.slam_defense = 0 en php.ini debería solucionar el problema.

+0

solucionado el problema para mí. –

+3

Explicación: apc.write_lock efectivamente desaprueba el slam_defence. – marcovtwout

2

Estas instrucciones variarán en función de cómo esté instalado PHP.

Pero, en su archivo /etc/php5/cgi/conf.d/extensions.ini (o apc.ini, o php.ini) después de haber agregado su extension=apc.so puede desactivar la defensa Slam

Por ejemplo, esta es mi configuración que yo uso.

[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

últimas versiones de APC parece resolver un problema, puede actualizar APC con PECL

pecl upgrade apc