PHP 8.5.0 Beta 1 available for testing

apcu_entry

(PECL apcu >= 5.1.0)

apcu_entry Атомарно извлекает или генерирует запись в кеше

Описание

apcu_entry(string $key, callable $callback, int $ttl = 0): mixed

Функция атомарно пытается найти запись с ключом key, а если не находит, вызывает callback-функцию и передаёт в функцию обратного вызова ключ key как единственный аргумент. Затем функция кеширует значение, которое вернула callback-функция, опционально устанавливает для записи время жизни ttl и возвращает это значение.

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

Внимание

Единственная APCu-функция, которая безопасно вызывается в callback-функции, — apcu_entry().

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

key

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

callback

Callback-функция, которая принимает единственный аргумент key и возвращает значение для кеширования.

ttl

Время жизни; параметр ttl устанавливает интервал времени в секундах, в течение которого значение возврата callback-функции хранится в кеше. По истечении количества секунд, которое определили в параметре 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() - Удаляет сохранённое значение из кеша

Добавить

Примечания пользователей

Пользователи ещё не добавляли примечания для страницы
To Top