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

# apcu_entry

(PECL apcu >= 5.1.0)

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

### Descripción

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

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 `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 llamarse de forma segura desde `callback` es apcu_entry().

### Parámetros

`key`
  Identificador 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 el valor de retorno del `callback` en la caché durante `ttl` segundos. Después de que `ttl` haya transcurrido, la entrada 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.).

### 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

- apcu_store() - Almacena una variable en la caché de datos
- apcu_fetch() - Recupera una variable almacenada en la caché
- apcu_delete() - Elimina una variable almacenada en caché

`↑` and `↓` to navigate • `Enter` to select • `Esc` to close • `/` to open