apc_add() 和 apc_store() 的区别

21

我知道apc_store()如果键已经存在,它会覆盖该键,因此我知道它们之间的差异,我的问题只是:哪种方法更好/最佳实践?

4个回答

43
这两个函数之间唯一的区别是 apc_add() 不会覆盖现有的条目。
另一方面,apc_store() 会覆盖现有的条目。
所以,在 apc_add()apc_store() 中选择哪一个取决于您的需求:您想要覆盖现有的条目还是不想?

这种差异的结果可能在并发环境中产生重大影响:过度锁定,导致极高的延迟或崩溃(我已经添加了另一个相关答案)。 - etov

2
除了@Pascal MARTIN所写的内容外,它们之间还存在一个重大的实际差别。
在高度并发的环境中,例如在apache中使用apc来处理用户对象时,使用apc_store可能会导致apc时间炸弹(该链接来自2007年但仍然相关!),而apc_add可以缓解此问题。
另请参见:https://serverfault.com/questions/342295/apc-keeps-crashing

1

这真的取决于您需要应用的逻辑:您是否需要覆盖键?这完全取决于您。


2
那么你的内存就会出现页面错误。 - DanMan

1

如果您想在并发环境中实现原子计数器,则需要使用apc_add(),这是我认为的主要用例。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接