apc_cas() 函数的实际用法是什么?

What is the real usage of apc_cas() function?

我想知道我需要在PHP中使用apc_cas功能的真实例子。

向您保证没有其他人更新该键中的值。出于这个原因,您必须传递 $old 值。如果当前值与您知道的键值(在本例中为 $old)不同,则不会更新键并返回 false。

密钥存储数据库中常用的 http://en.wikipedia.org/wiki/Compare-and-swap 的实现。

一个简单的例子就是计数器。假设我们有一个键 counter 和一个增加计数器的函数(请注意,这更适合 apc_inc 函数,但让我们一起玩):

function incCounter(){
    //Get the current value increment and set
    $c = apc_fetch('counter');
    $c++;
    apc_store('counter',$c);
}

但是上面有一个问题。如果两个请求同时发生,都将获得相同的 $c 值并递增它,这意味着计数器只会递增 1。

然而,使用 apc_cas 让我们保证您正在更新的值是旧值,并且在此期间没有被更改。