2010-05-26 11 views
8

He comenzado a probar APC para almacenar algunos datos específicos en cada servidor web como complemento de memcached.PHP: apc_store no funciona según lo previsto

Sin embargo, el siguiente fragmento de código me está dando dolores de cabeza:

echo apc_store('key', 'value'); 
echo apc_store('key', 'newvalue'); 
echo apc_fetch('key'); 

// Echoes: value 

ejemplo Memcached:

$memcached = new Memcached; 

$memcached->addServer('localhost', '11211'); 

$memcached->set('key', 'value1'); 
echo $memcached->get('key') . '<br />'; // Echoes value1 

$memcached->set('key', 'value2'); 
echo $memcached->get('key'). '<br />'; // Echoes value2 

$memcached->set('key', 'value3'); 
echo $memcached->get('key'). '<br />'; // Echoes value3 

¿Por qué no funciona como se apc_store correctamente?

EDIT: Para asegurarse de que nadie más está gastando dos horas en la búsqueda de una solución, cuando esto se debe a un error, aquí está uno: http://pecl.php.net/bugs/bug.php?id=16894&edit=1 (no la más eficaz, aunque)

Respuesta

7

Esto parece ser un problema conocido: PECL Bug #16814 New warning "Potential cache slam averted for key"

Parece que solo permite un apc_store() por solicitud. Probé esta prueba:

<?php 

echo "<p>apc_fetch(key): " . apc_fetch('key') . "</p>\n"; 
// echo "<p>apc_store(value): " . apc_store('key', 'value') . "</p>\n"; 
echo "<p>apc_store(newvalue): " . apc_store('key', 'newvalue') . "</p>\n"; 
echo "<p>apc_fetch(key): " . apc_fetch('key') . "</p>\n"; 

Juego con esto, no-comentar la segunda línea y ver que no sobrescribir un conjunto clave de una solicitud anterior, pero sólo se puede almacenar una clave dada una vez por solicitud.

El registro de errores menciona una configuración de archivo ini apc.slam_defense que cuando se establece en Off puede deshabilitar este comportamiento de escritura única. Pero lo intenté brevemente y no pude confirmar que esto funcione. Quizás tengas más suerte (recuerda reiniciar Apache cuando cambies php.ini).

+0

Podría imaginarse que era algo extraño como esto. Muchas gracias por tu ayuda, Bill! – Industrial

+0

Por cierto, he estado un poco flojo en los árboles mySQL que te pregunté hace algún tiempo aquí en SO. Estabas diciendo que ibas a hacer algunos ejemplos de árbol disponibles en Github. ¿Algo nuevo allí? – Industrial

+0

Actualicé mi publicación con un enlace a una solución que podría ayudarlo a usted o a cualquier otra persona que esté atrapada en la misma situación y DEBE usar APC – Industrial

Cuestiones relacionadas