wincache_ucache_set

(PECL wincache >= 1.1.0)

wincache_ucache_set 在用户缓存中添加变量,如果缓存中已存在变量则覆盖它

描述

wincache_ucache_set(混合 $key, 混合 $value, 整型 $ttl = 0): 布尔型
wincache_ucache_set(数组 $values, 混合 $unused = NULL, 整型 $ttl = 0): 布尔型

在用户缓存中添加变量。如果缓存中已存在变量则覆盖它。添加或更新的变量将保留在用户缓存中,除非其生存时间到期或使用 wincache_ucache_delete()wincache_ucache_clear() 函数删除。

参数

key

使用此 key 名称存储变量。如果已经存在具有相同 key 的变量,则该函数将用新值覆盖先前值。key 区分大小写。 key 也可以接受名称 => 值对的数组,其中名称将用作键。这可用于在一个操作中在缓存中添加多个值,从而避免竞争条件。

value

要存储的变量的值。 Value 支持所有数据类型,但资源(如文件句柄)除外。如果第一个参数是数组,则忽略此参数。一般建议是在使用数组作为 key 时将 null 作为 value 传递。如果 value 是一个对象,或者是一个包含对象的数组,则这些对象将被序列化。有关序列化对象的详细信息,请参见 __sleep()

values

键值对的关联数组。

ttl

变量在缓存中生存的时间,以秒为单位。在 ttl 中指定的值过去后,存储的变量将从缓存中删除。此参数的默认值为 0,这意味着变量将保留在缓存中,除非使用 wincache_ucache_delete()wincache_ucache_clear() 函数显式删除。

返回值

如果 key 是字符串,则该函数在成功时返回 true,在失败时返回 false

如果 key 是数组,则该函数返回

  • 如果数组中的所有名称 => 值对都可以设置,则函数返回一个空数组;
  • 如果数组中的所有名称 => 值对都无法设置,则函数返回 false
  • 如果某些可以设置而其他无法设置,则函数返回一个数组,其中包含在用户缓存中添加失败的名称=>值对。

示例

示例 #1 wincache_ucache_set() 其中 key 为字符串

<?php
$bar
= 'BAR';
var_dump(wincache_ucache_set('foo', $bar));
var_dump(wincache_ucache_get('foo'));
$bar1 = 'BAR1';
var_dump(wincache_ucache_set('foo', $bar1));
var_dump(wincache_ucache_get('foo'));
?>

以上示例将输出

bool(true)
string(3) "BAR"
bool(true)
string(3) "BAR1"

示例 #2 wincache_ucache_set() 其中 key 为数组

<?php
$colors_array
= array('green' => '5', 'Blue' => '6', 'yellow' => '7', 'cyan' => '8');
var_dump(wincache_ucache_set($colors_array));
var_dump(wincache_ucache_set($colors_array));
var_dump(wincache_ucache_get('Blue'));
?>

以上示例将输出

array(0) {}
array(0) {}
string(1) "6"

参见

添加备注

用户贡献的备注 1 个备注

0
don dot raman at microsoft dot com
14 年前
在撰写此备注时(PHP 5.3.1),不允许序列化闭包。

这意味着像下面这样的代码

<?php
//闭包
$bar3 = function($a) {
return
$a * 2;
};
wincache_ucache_set('foo3', $bar3);
var_dump(wincache_ucache_get('foo3'));
echo
"<br>";
?>

将抛出异常
[11-Feb-2010 09:25:33] PHP Fatal error: Uncaught exception 'Exception' with message 'Serialization of 'Closure' is not allowed' in C:\inetpub\wwwroot\phptest\tests\ucache\wincache15.php:6
堆栈跟踪
#0 C:\inetpub\wwwroot\phptest\tests\ucache\wincache15.php(6): wincache_ucache_set('foo3', Object(Closure))
#1 {main}
thrown in C:\inetpub\wwwroot\phptest\tests\ucache\wincache15.php on line 6

但是,您可以像这样捕获此异常
<?php
// 闭包
$bar3 = function($a) {
return
$a * 2;
};
try
{
wincache_ucache_set('foo3', $bar3);
}
catch (
Exception $e)
{
var_dump($e->getMessage());
}
var_dump(wincache_ucache_get('foo3'));
echo
"<br>";
?>

这将生成如下所示的输出
string(41) "Serialization of 'Closure' is not allowed" NULL
To Top