Usando Memcache com Kohana PHP
O Memcache é um sistema de cache de memória distribuída de alta performance, que permite acesso rápido a objetos que são armazenados em seu cache. A utilização vai da criatividade e necessidade do programador, que pode armazenar resultados de consultas, imagens, objetos, códigos para rápido acesso posterior.
O uso de Memcache normalmente segue um padrão:
- O aplicativo recebe uma consulta do usuário ou do aplicativo.
- O aplicativo verifica se os dados necessários para satisfazer a consulta estão no cache de memória.
- Se os dados estiverem no cache de memória, o aplicativo utiliza os dados.
- Se os dados não estiverem no cache de memória, o aplicativo consulta o armazenamento de dados e armazena os resultados no cache de memória para solicitações futuras.
Legal, e no Kohana?
Primeiro passo, vamos copiar o arquivo /system/config/cache.php para /application/config/cache.php
Configure o arquivo para que fique desta forma:
$config['default'] = array( 'driver' => 'memcache', 'params' => '', 'lifetime' => 3600, 'requests' => 1000 );
Você pode alterar os parâmetros como precisa, onde sugiro:
lifetime = 3600 segundos (1h de timeout)
requests = 1000 (mil requisições de timeout)
E se o MemCache estiver em outro servidor?
Ai está, uma dica importante! Se você não executa o MemCache no mesmo servidor do Kohana, você precisa alterar o arquivo cache_memcache.php em application/config. Se você tiver mais de um servidor memcached, você pode adicioná-las ao array $config[‘servers’]. Veja um exemplo:
$config['servers'] = array( array( 'host' => '127.0.0.1', 'port' => 1234, 'persistent' => FALSE ) );
Exemplos
Pronto as configurações, agora é a hora tão esperada em usar o cache, e realmente é a etapa mais fácil:
// Instancia o cache $cache = Cache::instance(); // Tentando obter dados do cache $retorno = $cache->get('item'); if(!$retorno) { // Dados não retornaram, obtendo dados da origem $retorno = ORM::Factory('teste')->dados(); // Gravando novo cache $cache->set('item',$retorno); }
Simples, não? É Kohana e é por isso que eu gosto!