当前位置:  开发笔记 > 编程语言 > 正文

PHP:apc_store不能按预期工作

如何解决《PHP:apc_store不能按预期工作》经验,为你挑选了1个好方法。

我已经开始尝试APC在每个网络服务器上存储一些特定数据,作为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') . '
'; // Echoes value1 $memcached->set('key', 'value2'); echo $memcached->get('key'). '
'; // Echoes value2 $memcached->set('key', 'value3'); echo $memcached->get('key'). '
'; // Echoes value3

为什么apc_store无法正常工作?

编辑: 要确保没有其他人在寻找一个解决方案,如果这是由一个错误引起的花费两个小时,这是一个:http://pecl.php.net/bugs/bug.php?id=16894&edit= 1(虽然不是最有效的)



1> Bill Karwin..:

这似乎是一个众所周知的问题:PECL Bug#16814新警告"潜在缓存猛烈抨击关键"

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

apc_fetch(key): " . apc_fetch('key') . "

\n"; // echo "

apc_store(value): " . apc_store('key', 'value') . "

\n"; echo "

apc_store(newvalue): " . apc_store('key', 'newvalue') . "

\n"; echo "

apc_fetch(key): " . apc_fetch('key') . "

\n";

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

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


我为树代码扩展了Zend Framework,因此我将我的实验代码放在他们的svn存储库(http://is.gd/cqqWt)上的`ZendX`孵化器中.幻灯片位于http://www.slideshare.net/billkarwin/models-for-hierarchical-data
推荐阅读
放ch养奶牛
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有