PHP:apc_store无法按预期工作

前端之家收集整理的这篇文章主要介绍了PHP:apc_store无法按预期工作前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我已经开始尝试APC在每个Web服务器上存储一些特定数据,作为memcached的补充.

但是,以下代码片令我头疼:

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

// Echoes: value

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

为什么apc_store无法正常工作?

编辑:
为了确保没有其他人花费两个小时寻找解决方案,当这是由一个错误造成的时,这里是一个:http://pecl.php.net/bugs/bug.php?id=16894&edit=1(不是最有效的)

这似乎是一个已知问题: PECL Bug #16814 New warning “Potential cache slam averted for key”

似乎每个请求只允许一个apc_store().我试过这个测试:

<?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";

玩这个,取消注释第二行并看到它确实覆盖了先前请求的键集,但是每个请求只能存储一个给定的键.

错误日志提到了一个ini文件设置apc.slam_defense,当设置为Off时可以禁用这种单写行为.但我简单地尝试了一下,我无法证实这是有效的.也许你会有更多的运气(记得在你改变PHP.ini时重启Apache).

猜你在找的PHP相关文章