O memcached é uma ferramenta openSource que visa a alta performance do servidor, fazendo com que tanto a aplicação quanto o servidor passem a ter uma performance satisfatória.
Aqui falaremos sobre o Daemon do memcached, e logo após do módulo do memcache para o PHP que prove um meio de se programar de forma mais simples utilizando funções do mesmo.
####################
# MENCACHED DAEMON #
####################
- Acesse:
http://code.google.com/p/memcached/downloads/list
- Faça o download da última versão estável.
wget -c http://memcached.googlecode.com/files/memcached-1.4.5.tar.gz
tar -xzvf memcached-1.4.5.tar.gz
- Acesse a pasta do memcached:
cd /home/user/memcached-1.4.5/
- Para compilar você pode ajustar para uma forma que mais se ajuste para seu ambiente, você pode verificar os parâmetros através de:
./configure --help
- Em meu caso, para atender o que necessito bastou:
./configure --prefix=/opt/memcached-1.4.5 --enable-64bit
- Enquanto compilava obtive o seguinte erro:
checking for libevent directory... configure: error: libevent is required. You can get it from http://www.monkey.org/~provos/libevent/
If it's already installed, specify its path using --with-libevent=/dir/
- Como estou utilizando em meu ambiente debian bastou utilizar um apt-get install libevent-dev e solucionou meu problema, porém basta verificar o gerenciador de pacotes de você utiliza e adequar, ou então passar o diretório caso você possua a libevent já instalada em algum lugar de seu servidor.
- Se nenhum outro warning aparecer, basta executar um:
make && make install
- E sucesso, seu memcached está instalado em /opt/memcached-1.4.5
- Agora você se pergunta.... o que fazer?
- Vamos dar um start no serviço! Para isso existem diversos scripts espalhados na internet, e também o próprio script que está no .tar.gz do memcached.
Eu optei nessa dica por criar um script simples, portanto ele precisa de melhorias e está aberto a criticas construtivas.
Link para o script:
https://github.com/abargiela/scripts/blob/master/init_memcached.sh
- Mova o script memcached-init para /etc/init.d/memcached-init, e faça um link simbolico para o seu rc, para verificar qual você utiliza, de um rulevel:
N 2
ln -s /etc/init.d/memcached-init /etc/rc2.d/S99memcached-init
Considero as 2 formas acima correta, portanto verifique qual a melhor para você.
- Ajuste a permissão para nobody.
chown nobody.root /opt/memcached-1.4.5/
- Caso queria verificar o log, ele se encontra em /opt/memcached-1.4.5/log/memcached_log.txt
- É basicamente isso não tem muito segredo, qualquer dúvida estamos ai.
#####################
# Extension MEMCACHE PHP #
#####################
- Acesse http://pecl.php.net/package/memcache
- Faça o download da ultima versão estável.
wget -c http://pecl.php.net/get/memcache-2.2.5.tgz
- Descompacte o pacote:
tar -xzvf memcache-2.2.5.tgz
- Acesse a pasta:
cd memcache-2.2.5
- Agora o processo é simples, mantenha-se dentro da pasta do memcache, e execute:
--> phpize (obs.: caso você tenha compilado o php e especificado o prefix, o caminho do phpize pode variar)
- No meu caso:
/opt/php/bin/phpize
- Depois:./configure --with-php-config=/opt/php/bin/php-config (também é necessário especificar)
--> Peguei um erro de compilação pois o memcache necessitava da ZLIB instalei zlib1g-dev e compilou normalmente, portante fique atento antes de continuar a compilação para corrigir os eventuais erros.
- Caso não de erro:
make && make install
- Ao final irá aparecer algo como:
Installing shared extensions: /opt/php/lib/php/extensions/no-debug-non-zts-20060613/
- Pegue esse caminho pois o memcache.so estará la vamos até o php.ini:
/opt/php-5.2.6/lib/php.ini (no meu caso esse é o path do php.ini)
- Vá até a parte das extensions e adicione:
extension=/opt/php-5.2.6/lib/php/extensions/no-debug-non-zts-20060613/memcache.so
- Salve e saia.- Reinicie seu apache.
/opt/apache/bin/apachectl restart
- Para verificar se o memcache está funcionando como o esperado:
/opt/php/bin/php -i | grep -i --color memcache
- O retorno do comando acima deverá ser algo similar a:
memcache
memcache support => enabled
memcache.allow_failover => 1 => 1
memcache.chunk_size => 8192 => 8192
memcache.default_port => 11211 => 11211
memcache.default_timeout_ms => 1000 => 1000
memcache.hash_function => crc32 => crc32
memcache.hash_strategy => standard => standard
memcache.max_failover_attempts => 20 => 20
Referencias:
http://pecl.php.net/package/memcache
http://code.google.com/p/memcached/wiki/NewStart?tm=6
http://www.php.net/memcache
:D