# apcu_entry

(PECL apcu >= 5.1.0)

apcu_entry — Récupère atomiquement ou génère une entrée de cache

### Description

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

Tente de récupérer atomiquement la valeur indexée par la clé `key` dans le cache. Si elle ne peut pas être récupérée, la fonction passée à `generator` est appelée, avec pour unique argument la valeur contenue dans `key`. La valeur de retour de l'appel est ensuite mise en cache avec le paramètre optionnel `ttl`, puis rend la main.

> Note: Lorsque le contrôle entre dans apcu_entry() le verrou du cache est acquis de façon exclusive. Il est libéré lorsque le contrôle quitte apcu_entry(): Plus précisément, le corps de la fonction passée à `generator` devient une section critique, ce qui interdit à deux processus d'exécuter la même partie du code concurrentiellement. En outre, il interdit l'exécution concurrentielle de tout autre fonction APCu, puisqu'elle acquerra le même verrou.

Avertissement

La seule fonction qui peut être appelée en toute sécurité par `generator` est apcu_entry().

### Liste de paramètres

`key`

  Clé d'une entrée de cache.

`generator`

  Un paramètre de type callable qui prend `key` pour unique argument et retourne la valeur à mettre en cache.

`ttl`

  Durée de vie; stocke la variable `var` dans le cache pour une durée de `ttl` secondes. Après l'expiration de `ttl`, la variable stockée sera retirée du cache (à la prochaine requête). Si aucune valeur n'est passée au paramètre `ttl` (ou si la valeur de `ttl` est `0`), la variable persistera jusqu'à qu'elle soit retirée manuellement du cache, ou, sinon, elle échouera à sortir du cache (lors d'un effaçage, redémarrage, etc.).

### Valeurs de retour

Retourne la valeur mise en cache.

### Exemples

Exemple #1 Un exemple avec 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);
?>`

L'exemple ci-dessus va afficher :

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

### Voir aussi

- apcu_store() - Met en cache une variable dans le dépôt de données
- apcu_fetch() - Récupère une variable stockée dans le cache
- apcu_delete() - Retire une variable stockée du cache