CakeFest 2024: The Official CakePHP Conference

wincache_ucache_set

(PECL wincache >= 1.1.0)

wincache_ucache_setДобавляет переменную в пользовательский кеш и перезаписывает переменную, если она уже существует в кеше

Описание

wincache_ucache_set(mixed $key, mixed $value, int $ttl = 0): bool
wincache_ucache_set(array $values, mixed $unused = NULL, int $ttl = 0): bool

Добавляет переменную в пользовательский кеш. Заменяет переменную, если она уже существует в кеше. Добавленная или обновлённая переменная остаётся в пользовательском кеше, пока не истечёт срок её действия или она не будет удалена с помощью функций wincache_ucache_delete() или wincache_ucache_clear().

Список параметров

key

Сохраняет переменную с использованием этого имени key. Если переменная с таким же key уже существует, функция перезапишет предыдущее значение новым. key чувствителен к регистру. key также может принимать массив пар имя => значение, где имена будут использоваться в качестве ключей. Это можно использовать для добавления нескольких значений в кеш за одну операцию, что позволяет избежать состояния гонки.

value

Значение переменной, которую необходимо сохранить. Value поддерживает все типы данных, кроме ресурсов, таких как дескрипторы файлов. Параметр игнорируется, если первым аргументом является массив. Общее руководство - передать null в качестве value при использовании массива key. Если value является объектом или массивом, содержащим объекты, то объекты будут сериализованы. Подробнее о сериализации объектов смотрите в описании __sleep().

values

Ассоциативный массив ключей и значений.

ttl

Время, в течение которого переменная находится в кеше, в секундах. После того, как значение, указанное в ttl будет передано, сохранённая переменная будет удалена из кеша. Параметр принимает значение по умолчанию 0, что означает, что переменная останется в кеше, пока она не будет явно удалена с помощью функций wincache_ucache_delete() или wincache_ucache_clear().

Возвращаемые значения

Если key является строкой, функция возвращает true в случае успешного выполнения и false в случае возникновения ошибки.

Если key является массивом, функция возвращает:

  • Если все пары имя => значение в массиве могут быть установлены, функция возвращает пустой массив;
  • Если все пары имя => значение в массиве не могут быть установлены, функция возвращает false;
  • Если некоторые из них могут быть установлены, а другие - нет, функция возвращает массив с парами name => value, которые не удалось добавить в пользовательский кеш.

Примеры

Пример #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"

Смотрите также

  • wincache_ucache_add() - Добавляет переменную в пользовательский кеш, только если переменная ещё не существует в кеше
  • wincache_ucache_get() - Получает переменную, хранящуюся в пользовательском кеше
  • wincache_ucache_delete() - Удаляет переменные из пользовательского кеша
  • wincache_ucache_clear() - Удаляет всё содержимое пользовательского кеша
  • wincache_ucache_exists() - Проверяет, существует ли переменная в пользовательском кеше
  • wincache_ucache_meminfo() - Получает информацию об использовании памяти пользовательского кеша
  • wincache_ucache_info() - Получает информацию о данных, хранящихся в пользовательском кеше
  • __sleep()

add a note

User Contributed Notes 1 note

up
0
don dot raman at microsoft dot com
14 years ago
As of writing this note (PHP 5.3.1) serialization of closure is not allowed.

This means a code like the one below:

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

Will throw exception:
[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
Stack trace:
#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

However one catch this exception like:
<?php
//Closure
$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>";
?>

This will generate output as shown beloe:
string(41) "Serialization of 'Closure' is not allowed" NULL
To Top