apcu_entry
(PECL apcu >= 5.1.0)
apcu_entry — Busca ou gera atomicamente uma entrada de cache
Descrição
Tenta atomicamente encontrar key
no cache, se não puder ser encontrado, generator
é chamado, passando key
como único argumento. O valor de retorno da chamada é então armazenado em cache com o ttl
especificado opcionalmente e retornado.
Note: 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
generator
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.
A única função APCu que pode ser chamada com segurança por generator
é apcu_entry().
Parâmetros
key
-
Identidade da entrada de cache
generator
-
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
var
no cache porttl
segundos. Depois dessesttl
segundos, a variável armazenada será excluída do cache (na próxima requisição). Se nenhum parâmetrottl
for informado (ou settl
for0
), 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
Example #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