PHP 8.5.0 Alpha 4 available for testing

apcu_entry

(PECL apcu >= 5.1.0)

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

Descripción

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

Intenta de forma atómica encontrar key en la caché, si no se puede encontrar se llama a callback, pasando key como único argumento. El valor de retorno de la llamada se almacena en caché con el ttl opcionalmente especificado, y se devuelve.

Nota: Cuando el control entra en apcu_entry() se adquiere el bloqueo para la caché de forma exclusiva, se libera cuando el control sale de apcu_entry(): En efecto, esto convierte el cuerpo de callback en una sección crítica, impidiendo que dos procesos ejecuten las mismas rutas de código concurrentemente. Además, prohíbe la ejecución concurrente de cualquier otra función de APCu, ya que adquirirán el mismo bloqueo.

Advertencia

La única función de APCu que puede ser llamada de forma segura por callback es apcu_entry().

Parámetros

key

Identidad de la entrada en caché

callback

Una retrollamada que acepta key como único argumento y devuelve el valor a almacenar en caché.

ttl

Tiempo de Vida; almacena var en la caché durante ttl segundos. Después de que ttl haya pasado, la variable almacenada será eliminada de la caché (en la siguiente petición). Si no se proporciona ttl (o si el ttl es 0), el valor persistirá hasta que sea eliminado de la caché manualmente, o deje de existir en la caché (limpieza, reinicio, etc.).

Valores devueltos

Devuelve el valor almacenado en caché

Ejemplos

Ejemplo #1 Un ejemplo de 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 ejemplo anterior mostrará :

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