Busca ou gera atomicamente uma entrada de cache

# apcu_entry

(PECL apcu >= 5.1.0)

apcu_entry — Busca ou gera atomicamente uma entrada de cache

### Descrição

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

Tenta atomicamente encontrar `key` no cache, se não puder ser encontrado, `callback` é chamado, passando `key` como único argumento. O valor de retorno da chamada é então armazenado em cache com o `ttl` especificado opcionalmente e retornado.

> Nota: Quando o controle entra em apcu_entry() a trava para o cache é adquirida exclusivamente, ela é liberada quando o controle sai de apcu_entry(): Na verdade, isso transforma o corpo do `callback` em uma seção crítica, impedindo que dois processos executem os mesmos caminhos de código simultaneamente. Além disso, proíbe a execução simultânea de quaisquer outras funções da APCu, pois irão adquirir a mesma trava.

Aviso

A única função APCu que pode ser chamada com segurança por `callback` é apcu_entry().

### Parâmetros

`key`
  Identidade da entrada de cache
`callback`
  Uma função chamável que aceite `key` como o único argumento e retorne o valor para o cache.
`ttl`
  Tempo de Vida (Time To Live); armazena o valor de retorno de `callback` no cache por `ttl` segundos. Depois desses `ttl` segundos, a entrada armazenada será excluída do cache (na próxima requisição). Se nenhum parâmetro `ttl` for informado (ou se `ttl` for `0`), o valor persistirá até que seja removido do cache manualmente, ou caso deixe de existir no cache (limpeza, reinício, etc.).

### Valor Retornado

Retorna o valor armazenado em cache

### Exemplos

Exemplo #1 Um exemplo de apcu_entry()

    <?php
    $config = apcu_entry("config", function($key) {
     return [
       "fruta" => apcu_entry("config.fruta", function($key){
         return [
           "abacaxis",
           "bananas"
         ];
       }),
       "pessoas" => apcu_entry("config.pessoas", function($key){
         return [
          "Marcelo",
          "Pedro",
          "Maria"
         ];
       })
     ];
    });

    var_dump($config);
    ?>

O exemplo acima produzirá:

    array(2) {
      ["fruta"]=>
      array(2) {
        [0]=>
        string(6) "abacaxis"
        [1]=>
        string(5) "bananas"
      }
      ["pessoas"]=>
      array(3) {
        [0]=>
        string(3) "Marcelo"
        [1]=>
        string(3) "Pedro"
        [2]=>
        string(4) "Maria"
      }
    }

### Veja Também

- apcu_store() - Armazena uma variável em cache
- apcu_fetch() - Busca uma variável armazenada no cache
- apcu_delete() - Remove uma variável armazenada do cache

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