apcu_entry
(PECL apcu >= 5.1.0)
apcu_entry — Автоматическое извлечение или создание записи в кеше
Описание
Автоматически пытается найти запись с заданным ключом key.
Если не может, то вызывается генератор generator и ему
передается ключ key как единственный аргумент.
Сгенерированное значение заносится в кеш с указанным ttl и
возвращается.
Замечание: Когда контроль передается apcu_entry(), производится эксклюзивная блокировка кеша, которая снимается после завершения работы apcu_entry(): это приводит к тому, что тело генератора
generatorпомещается в критическую секцию, запрещая двум процессам запустить выполнение одинакового кода конкурентно. К тому же, это приводит к запрету конкурентного запуска любых других функций APCu, так как они будут выставлять ту же блокировку.
Единственная функция APCu, которую можно безопасно вызывать в генераторе
generator - это apcu_entry().
Список параметров
-
key -
Идентификатор записи
-
generator -
Callback-функция, принимающая один параметр
keyи возвращающая значение для кеширования. -
ttl -
Время жизни; переменная
varбудет храниться в течениеttlсекунд. Как толькоttlсекунд пройдут, переменная будет удалена из кеша (при следующем запросе). Если параметрttlне задан (илиttlзадан как0), значение будет храниться пока не будет удалено явно, либо по технической причине (очистка кеша, перезапуск и т.д.)
Возвращаемые значения
Возвращает закешированное значение
Примеры
Пример #1 Пример использования apcu_entry()
<?php
$config = apcu_entry("config", function($key) {
return [
"fruit" => apcu_entry("config.fruit", function($key){
return [
"apples",
"pears"
];
}),
"people" => apcu_entry("config.people", function($key){
return [
"bob",
"joe",
"niki"
];
})
];
});
var_dump($config);
?>
Результат выполнения данного примера:
array(2) {
["fruit"]=>
array(2) {
[0]=>
string(6) "apples"
[1]=>
string(5) "pears"
}
["people"]=>
array(3) {
[0]=>
string(3) "bob"
[1]=>
string(3) "joe"
[2]=>
string(4) "niki"
}
}
Смотрите также
- apcu_store() - Кеширует переменную
- apcu_fetch() - Извлекает из кеша сохраненную переменную
- apcu_delete() - Удаляет сохраненное значение из кеша