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
让我们保证您正在更新的值是旧值,并且在此期间没有被更改。
我想知道我需要在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
让我们保证您正在更新的值是旧值,并且在此期间没有被更改。