apcu_entry

(PECL apcu >= 5.1.0)

apcu_entry Recupera de manera atómica o genera una entrada de caché

Descripción

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

Intenta recuperar de manera atómica el valor indexado por la clave key en la caché. Si no puede ser recuperado, la función pasada a generator es llamada, con el único argumento de la clave contenida en key. El valor de retorno de la llamada es luego almacenado en caché con el parámetro opcional ttl, y luego devuelve el control.

Nota: Cuando el control entra en apcu_entry(), el bloqueo de la caché es adquirido de manera exclusiva. Es liberado cuando el control sale de apcu_entry(): Más específicamente, el cuerpo de la función pasada a generator se convierte en una sección crítica, lo que impide que dos procesos ejecuten la misma parte del código de manera concurrente. Además, impide la ejecución concurrente de cualquier otra función APCu, ya que adquirirá el mismo bloqueo.

Advertencia

La única función que puede ser llamada de manera segura por generator es apcu_entry().

Parámetros

key

Clave de una entrada de caché.

generator

Un parámetro de tipo callable que toma key como único argumento y devuelve el valor a almacenar en caché.

ttl

Duración de vida; almacena la variable var en la caché por una duración de ttl segundos. Después de la expiración de ttl, la variable almacenada será retirada de la caché (en la próxima solicitud). Si no se pasa ningún valor al parámetro ttl (o si el valor de ttl es 0), la variable persistirá hasta que sea retirada manualmente de la caché, o, de lo contrario, fallará al salir de la caché (durante un borrado, reinicio, etc.).

Valores devueltos

Devuelve el valor almacenado en caché.

Ejemplos

Ejemplo #1 Un ejemplo con 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);
?>

El resultado del ejemplo sería:

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"
  }
}

Ver también

add a note

User Contributed Notes

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