Функция apcu-entry

apcu_entry

(PECL apcu >= 5.1.0)

apcu_entry Автоматическое извлечение или создание записи в кеше

Описание функции

mixed apcu_entry ( string $key , callable $generator [, int $ttl = 0 ] )

Автоматически пытается найти запись с заданным ключем key. Если не может, то вызывается генератор generator и ему передается ключ key как единственный аргумент. Сгенерированноен значение заносится в кеш с указанным ttl и возвращается.

Замечание: Когда контроль передается apcu_entry(), производится эксклюзивная блокировка кеша, которая снимается после завершения работы apcu_entry(): это приводит к тому, что тело генератора generator помещается в критическую секцию, запрещая двум процессам запустить выполнение одинакового кода конкурентно. К тому же, это приводит к запрету конкурентного запуска любых других функций APCu, так как они будут выставлять ту же блокировку.

Внимание

Единственная функция APCu, которую можно безопасно вызывать в генераторе generator - это apcu_entry().

Параметры

key

Идентификатор записи

generator

Функция обратного вызова, принимающая один параметр 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"
  }
}


Возврат к списку