operacao para saber o resultado exato dela. Por exemplo, apos chamar o metodo get, utilizamos este metodo para saber se o dado foi encontrado, se ele nao foi encontrado, se ele expirou, etc. setSaslAuthData: e usado para especificar as credenciais de acesso a servidores memcache que habilitaram a autenticacao. touch: muda a data de expiracao de um dado a partir de seu codigo de identificacao.Para mais informacoes, acesse a lista completa de metodos da classe MemcachedCache em ArquivoArmazenar cache em arquivo tambem pode ser uma boa opcao dependendo do cenario. Ele possui uma abordagem similar ao APC, onde cada servidor de aplicacao tera seu proprio cache, havendo duplicacao de dados, mas nao ocupara dados em memoria RAM, mas sim em seu dispositivo de armazenamento nao volatil (HD, SSD, etc).E possivel montar uma arquitetura em que uma particao virtual e utilizada pelos servidores de aplicacao para acessar arquivos (com dados de cache) armazenados em um servidor externo. Isso torna a arquitetura mais parecida com a apresentada no Memcache/Memcached.Outra possibilidade e utilizar um diretorio montado como particao especial em memoria no sistema de arquivos. Neste caso, acessamos um arquivo de forma convencional, mas na verdade ele esta disponivel em memoria, o que torna mais rapido, porem, com um limite de espaco provavelmente menor.Para montar um cache em arquivo, basta usar algumas funcoes basicas do PHP:$informacao = obter_informacao_do_cache_arquivo($id);if (!$informacao) { $informacao = obter_informacao_da_fonte_original(); salvar_informacao_em_cache_arquivo($id, $informacao, $time_expiracao);}/// Implementacao das funcoes usadasfunction obter_informacao_do_cache_arquivo($id) { $arquivo = sprintf('/tmp/%s.cache', md5($id)); // Se nao encontrar o arquivo com o cache if (!file_exists($arquivo)) { return false; } $cache = unserialize(file_get_contents($arquivo)); // Se o cache ja expirou if ($cache['expiracao'] && time() > $cache['expiracao']) { unlink($arquivo); return false; } // Se o cache eh valido return $cache['valor'];}function salvar_informacao_em_cache_arquivo($id, $informacao, $time_expiracao = 0) { $arquivo = sprintf('/tmp/%s.cache', md5($id)); $cache = array( 'expiracao' => $time_expiracao, 'valor' => $informacao ); file_put_contents($arquivo, serialize($cache), LOCK_EX);}Observe que tanto a funcao que obtem uma informacao quanto a que salva a informacao no cache compartilham a mesma forma de se determinar o caminho do arquivo. No caso, foi utilizado o diretorio "/tmp" para o proposito.Um outro detalhe importante a ser considerado nesta implementacao e que, dependendo do tipo de particao do sistema de arquivos, manter o diretorio de cache com milhares de arquivinhos pequenos pode prejudicar a performance para encontrar o arquivo. Uma solucao para este inconveniente e manter uma quantidade limitada de arquivos de cache, ou entao agrupa-los em sub-diretorios. Uma forma de fazer isso seria usar os primeiros caracteres do md5 do codigo de identificacao como sendo nomes de sub-diretorios. Por exemplo, se um md5 obtido foi "6c716b189babf179a712570d31560673", entao o arquivo deve ser armazenado ou obtido em "/tmp/6/c/7/6c716b189babf179a712570d31560673.cache". Neste caso utilizamos 3 niveis de sub-diretorios utilizando os 3 primeiros caracteres retornados do md5 (como o md5 sempre devolve 32 caracteres, e seguro obter um numero fixo de caracteres do inicio). Como resultado, cada nivel de diretorio contera menos arquivos e, portanto, a velocidade de encontrar o arquivo sera maior. Esta e a mesma estrategia usada pela sessao quando se utiliza o armazenamento em arquivo.Outras formas de cacheAlem dos exemplos