PHP Conference Nagoya 2025

apcu_add

(PECL apcu >= 4.0.0)

apcu_add Добавить переменную в кеш

Описание

apcu_add(string $key, mixed $var, int $ttl = 0): bool
apcu_add(array $values, mixed $unused = NULL, int $ttl = 0): array

Добавляет переменную в кеш, если её там ещё нет.

Замечание: В отличие от многих других механизмов PHP, переменные, сохранённые apcu_add(), сохраняются между запросами, пока их не удалят из кеша.

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

key

Имя, под которым будет сохранена переменная. Значение key является уникальным для кеша, так что попытка использовать apcu_add() для сохранения переменной с ключом, который уже существует, не перезапишет запись, а вернёт false. (Это единственное различие между apcu_add() и apcu_store().)

var

Переменная для сохранения

ttl

Время жизни; переменная var будет храниться в течение ttl секунд. Как только ttl секунд пройдут, переменная будет удалена из кеша (при следующем запросе). Если параметр ttl не задан (или ttl задан как 0), значение будет храниться пока не будет удалено явно, либо по технической причине (очистка кеша, перезапуск и т.д.)

values

Имена в ключах, переменные в значениях.

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

Возвращает true, если удалось занести значение в кеш, в противном случае возвращает false. Второй тип синтаксиса возвращает массив с ключами, по которым произошла ошибка.

Примеры

Пример #1 Пример использования apcu_add()

<?php
$bar
= 'BAR';
apcu_add('foo', $bar);
var_dump(apcu_fetch('foo'));
echo
"\n";
$bar = 'NEVER GETS SET';
apcu_add('foo', $bar);
var_dump(apcu_fetch('foo'));
echo
"\n";
?>

Результат выполнения приведённого примера:

string(3) "BAR"
string(3) "BAR"

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

  • apcu_store() - Кеширует переменную
  • apcu_fetch() - Извлекает из кеша сохранённую переменную
  • apcu_delete() - Удаляет сохранённое значение из кеша

Добавить

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

up
4
sritter at satoya dot cz
3 years ago
This is usable for locking/unlocking

<?php
do {} while (!apcu_add('lock_name', 'foo', 10));
// this part is protected against multiple/multithread run
apcu_delete('lock_name');
To Top