这可以用于锁定/解锁
<?php
do {} while (!apcu_add('lock_name', 'foo', 10));
// 这部分受到多线程/多线程运行的保护
apcu_delete('lock_name');
(PECL apcu >= 4.0.0)
apcu_add — 在数据存储中缓存新变量
在数据存储中缓存变量,仅当该变量尚未存储时。
注意: 与 PHP 中许多其他机制不同,使用 apcu_add() 存储的变量将在请求之间持续存在(直到该值从缓存中删除)。
key
使用此名称存储变量。 key
是缓存唯一的,因此尝试使用 apcu_add() 存储具有已存在键的数据将不会覆盖现有数据,而是返回 false
。 (这是 apcu_add() 和 apcu_store() 之间的唯一区别。)
var
要存储的变量
ttl
生存时间;在缓存中存储 var
ttl
秒。 在 ttl
过期后,存储的变量将从缓存中删除(在下次请求时)。 如果没有提供 ttl
(或者如果 ttl
是 0
),则该值将持续存在,直到它被手动从缓存中删除,或者否则在缓存中不存在(清除、重启等)。
values
键中的名称,值中的变量。
如果成功将内容添加到缓存中,则返回 TRUE,否则返回 FALSE。 第二种语法返回包含错误键的数组。
范例 #1 一个 apcu_add() 例子
<?php
$bar = 'BAR';
apcu_add('foo', $bar);
var_dump(apcu_fetch('foo'));
echo "\n";
$bar = 'NEVER GETS SET';
apcu_add('foo', $bar);
var_dump(apcu_fetch('foo'));
echo "\n";
?>
上面的例子将输出
string(3) "BAR" string(3) "BAR"
这可以用于锁定/解锁
<?php
do {} while (!apcu_add('lock_name', 'foo', 10));
// 这部分受到多线程/多线程运行的保护
apcu_delete('lock_name');