(PECL apcu >= 5.1.0)
apcu_entry — Recupera o genera de forma atómica una entrada de caché
Intenta de forma atómica encontrar key en la caché; si no se encuentra, se llama a callback,
pasando key como único argumento. El valor de retorno de la llamada se almacena en caché con el ttl
especificado opcionalmente y se devuelve.
Nota: Cuando el control entra en apcu_entry(), se adquiere de forma exclusiva el bloqueo de la caché, que se libera cuando el control sale de apcu_entry(). En efecto, esto convierte el cuerpo de
callbacken 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 llamarse de forma segura desde callback es apcu_entry().
keyIdentificador de la entrada de 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 transcurrido, 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 se elimine manualmente de
la caché, 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"
}
}