PHP Conference Ehime 2026

Yac::delete

(PECL yac >= 1.0.0)

Yac::deleteElimina elementos de la caché

Descripción

public function Yac::delete(string|array $key, int $delay = 0): bool

Elimina uno o varios elementos de la caché.

Nota:

La eliminación se implementa marcando la entrada como caducada en lugar de liberar su ranura: la entrada deja de poder leerse de inmediato, pero la ranura permanece ocupada hasta que se almacena de nuevo la misma clave o hasta que una escritura posterior recupera dicha ranura. Como consecuencia, el número de ranuras usadas que informa Yac::info() no disminuye tras una eliminación, y Yac::dump() sigue mostrando la entrada eliminada hasta que su ranura se recicla; un valor ttl distinto de cero situado en el pasado indica una entrada eliminada o caducada, por lo que, al examinar la salida de Yac::dump(), tales entradas deben ser filtradas por el llamador.

Parámetros

key

Una clave de tipo string, o un array de claves que serán eliminadas.

delay

Número de segundos antes de que el elemento deje de ser válido. Si se omite o vale 0, el elemento se invalida de inmediato. Un valor positivo mantiene el elemento legible durante ese número de segundos antes de que caduque.

Valores devueltos

Devuelve true en caso de éxito, o false si la clave no estaba presente en la caché. Dado que una eliminación solo marca la entrada como caducada, una clave que ha sido eliminada pero aún no sobrescrita se sigue considerando presente: eliminar de nuevo la misma clave devuelve true.

Cuando se proporciona un array de claves, se devuelve true únicamente si todas las claves estaban presentes; si falta alguna clave, se devuelve false.

Ejemplos

Ejemplo #1 Ejemplo de Yac::delete()

<?php
$yac = new Yac();
$yac->set("foo", "bar");

var_dump($yac->delete("foo"));      // bool(true): marcada como caducada
var_dump($yac->get("foo"));         // bool(false): a partir de ahora, un fallo
var_dump($yac->delete("foo"));      // bool(true) de nuevo: la ranura aún no
                                     // ha sido sobrescrita
var_dump($yac->delete("never"));    // bool(false): nunca fue almacenada

// una eliminación no libera la ranura: slots_used no disminuye, y
// la entrada caducada sigue apareciendo en el volcado
var_dump($yac->info()["slots_used"]); // int(1)
print_r($yac->dump());                // "foo" sigue apareciendo; su ttl
                                       // está en el pasado
?>

Ejemplo #2 Eliminación retardada

<?php
$yac = new Yac();

// mantiene la entrada legible durante 60 segundos más antes de que expire
$yac->set("tmp", "value");
var_dump($yac->delete("tmp", 60));    // bool(true)
?>

Ejemplo #3 Eliminar varias claves en una sola llamada

<?php
$yac = new Yac();
$yac->set("tmp", "value");

// devuelve true solo cuando todas las claves estaban presentes
var_dump($yac->delete(array("tmp", "nope"))); // bool(false): falta "nope"
?>

Véase también

add a note

User Contributed Notes

There are no user contributed notes for this page.
To Top