(PECL apcu >= 5.1.0)
apcu_entry — Recupera o genera de forma atómica una entrada en caché
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.
La única función de APCu que puede ser llamada de forma segura por callback
es apcu_entry().
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.).
Devuelve el valor almacenado en caché
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" } }