
Conhecendo o Alternative PHP Cache (APC)
O APC é um cache de opcode que pode aumentar exponencialmente o desempenho da sua aplicação.
Entendendo Opcode:
Quando realizada um requisição para um script php, o engine do PHP lê o script e compila em bytecode. O bytecode está em um nível intermediário entre a linguagem de máquina e o código-fonte. Ele não é um executável, porém pode ser interpretado por uma máquina virtual, tendo maior portabilidade, pois independe da arquitetura do ambiente. No PHP, o bytecode gerado é chamado de opcode. O APC guarda o cache em opcode, o qual é reutilizado nas requisições subsequentes, ou seja, ele busca um opcode, o qual está em nível intermediário e será retornado de forma mais rápida. Com isso, ele reduz o tempo de processamento e melhora o desempenho do site ou sistema significativamente.
Instalação:
Em distribuições como Ubuntu, você pode facilmente instalar o APC com o comando abaixo:
sudo apt-get install php-apc
Após instalar, o APC virá com um script o apc.php, que pode ser utilizado para administração do cache através de uma interface gráfica. Para acessar este arquivo será solicitada uma senha a qual pode ser definida dentro do arquivo.
Cache de objetos com APC:
Com APC você pode ter cache de objetos de uma forma simples, por padrão as funções do APC já fazem serialização de objeto antes de inseri-lo no cache e desserialização na hora de obtê-lo do cache. Para Inserir, basta fazer o seguinte:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 |
<?php // classe para armazenar dados do usuario class usuario { private $id; private $nome; private $email; private $telefone; public function setId($id) { $this->id = $id; } public function getId() { return $this->id; } public function setNome($nome) { $this->nome = $nome; } public function getNome() { return $this->nome; } public function setEmail($email) { $this->email = $email; } public function getEmail() { return $this->email; } } // verifica se objeto consta no cache if ($usuario = apc_fetch('usuario')) { echo "Dados no Cache: "; } else { // criar cache para objeto usuario $usuario = new Usuario(); $usuario->setId(1); $usuario->setNome('Fernando'); // adicionar objeto usuário no cache apc_add('usuario', $usuario); } echo "<pre>"; echo $usuario->getId() . PHP_EOL; echo $usuario->getNome() . PHP_EOL; echo $usuario->getEmail() . PHP_EOL; echo "</pre>"; Para limpar o cache você pode utilizar: apc_delete('nome_variável'); Para limpar todo o cache OPCode você pode utilizar: apc_clear_cache(); |
Documentação:
A documentação pode ser encontrada diretamente no link http://php.net/manual/pt_BR/book.apc.php
Conclusão:
Tendo em vista que o cache fica dentro da memória RAM, você deve pesar a necessidade, o tamanho da aplicação e o que você tem de recursos disponíveis antes de utilizar este tipo de ferramenta, mas ao utilizar o conceito de cache de objetos de forma correta você obterá um crescimento de desempenho de forma exponencial. A ferramenta em si oferece várias funções que facilitam a criação e manipulação de cache, com isso aumentando a velocidade de produção ao utilizar o conceito.
- Conhecendo o Alternative PHP Cache (APC) - 25 de maio de 2016