(PECL apcu >= 5.1.0)
apcu_entry — Busca ou gera atomicamente uma entrada de cache
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.
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
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().
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 por
ttl
segundos. Depois desses
ttl
segundos, a variável 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.).
Retorna o valor armazenado em cache
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" } }