tarcisiojr/php-cache
Composer 安装命令:
composer require tarcisiojr/php-cache
包简介
Sistema para cache de métodos baseado em https://github.com/spatie/once
README 文档
README
Biblioteca para baseada na ideia do pacote once. Esta biblioteca permite cachear métodos podendo utilizar diversas estratégias para o comportamento do cache.
Segue abaixo um exemplo simples de utilização:
<?php class ClasseQualquer { public function gerarNroAleatorio() { return Cache::create(function () { return rand(1, 100); }) ->once() // Cacheia o valor uma única vez. ->statefull() // Cache existente apenas em nivel de request. ->scope(false) // Cache do método entre instâncias. ->ttl(10) // Tempo do cache sera de 10 segundos. ->get(); // Executa a obtenção do valor } }
Instalação
Editar seu arquivo composer.json e adicionar a sequinte dependência:
Interface para sistemas de Cache
Algumas estratégias de ache utilizam um sistema próprio para cachear os valores. Estes sistemas podem ser alterados
configurando a própria estrategia através de uma implementação da interface PHP\Cache\API\CacheSystem.
Como recurso básico existem duas implementações:
-
PHP\Cache\Core\System\FileCacheSystem: neste sistema de cache persisente, onde os valores são salvos em um arquivo JSON configurado, os valores serão matidos enquanto o arquivo não for excluídos e/ou seus valores expurgados. -
PHP\Cache\Core\System\StaticArrayCacheSystem: neste sistema os valores são persistidos apenas durante a execução do script, utilizando-se um array estático para mantê-lo.
Uso
Configure os sistemas de cache, se desejar:
-
PHP\Cache\Core\Cache::setStateCacheSystem(CacheSystem): cache utilizado para armazenar os estados das estratégias. Caso deseje manter este estado através das execuções dos scripts, este deve ser um sistema de cache persistente. -
PHP\Cache\Core\Strategy\StatefullCacheStrategy::setCacheSystem(CacheSystem): cache persistente utilizado pela estratégia Statefull. -
PHP\Cache\Core\Strategy\StatelessCacheStrategy::setCacheSystem(CacheSystem): cache de request utilizado pela estratégia Stateless.
Em seguida basta selecionar o método (podendo ser static ou não) e/ou função a ser cacheada, utilize o método estático
PHP\Cache\Core\Cache::create para criar uma instância do cache.
A partir da instância de cache você poderá selecionar a estrágias de armazenado e expiração, bem como escopo.
Por fim, para o obter o valor cachead (ou não) basta executar o método get().
Exemplo:
<?php class ClasseQualquer { public function gerarNroAleatorio() { return Cache::create(function () { return rand(1, 100); }) ->once() // Cacheia o valor uma única vez. ->statefull() // Cache existente apenas em nivel de request. ->scope(false) // Cache do método entre instâncias. ->ttl(10) // Tempo do cache sera de 10 segundos. ->get(); // Executa a obtenção do valor } }
Respeitando as estratégias configuradas, todas a vezes que método gerarNroAleatorio da classe ClasseQualquer
for executado, a partir da segunda execução, o valor retornado será idêntico ao primeiro valor retornado. Este valor se
será expirado após 10 segundos devido a extratégia ttl(10), portanto após este tempo será retornado um novo valor.
统计信息
- 总下载量: 8
- 月度下载量: 0
- 日度下载量: 0
- 收藏数: 2
- 点击次数: 1
- 依赖项目数: 0
- 推荐数: 0
其他信息
- 授权协议: Unknown
- 更新时间: 2017-04-29