memcached es un servicio que permite instalar una caché en memoria, lo que hace que la carga de cosas se haga mucho más rápida…
Antes de comenzar, como vamos a necesitar varias descargas, hay que saber las URL’s de las mismas… para ello visitaremos las siguientes páginas:
Librería libevent y nos guardaremos la URL de la última versión (en estos momentos es):
http://www.monkey.org/~provos/libevent-1.4.8-stable.tar.gz
Librería memcached y nos guardamos la URL de la última versión (en estos momentos es):
http://www.danga.com/memcached/dist/memcached-1.2.6.tar.gz
Librería Zlib y nos guardamos la URL de la última versión (en estos momentos es):
Librería PHP memcache y nos guardamos la URL de la última versión (en estos momentos es):
http://pecl.php.net/get/memcache-2.2.4.tgz
Una vez tengamos las 4 direcciones, nos queda comenzar a descargar e instalar…
cd /usr/local/src
wget http://www.monkey.org/~provos/libevent-1.4.8-stable.tar.gz
tar xzvf libevent*
cd libevent*
./configure –prefix=/usr/local
make
make install
Antes de continuar comprobaremos que hay una configuración para esta librería… esto dependerá de cada sistema, pero en general hay que comprobar si existe y el contenido del fichero…
cat /etc/ld.so.conf.d/libevent.conf
En caso de que exista, poco más a hacer… en caso de que no exista, haremos lo siguiente:
ejecutamos:
joe /etc/ld.so.conf.d/libevent.conf
y dentro del fichero incluimos:
/usr/local/lib/
Una vez lo guardemos, hay que comprobar que se ha configurado correctamente, y por ello ejecutaremos lo siguiente:
ldconfig -v
Con esto podremos comprobar que la carpeta /usr/local/lib/
se ha incluido correctamente…
Una vez acabada la instalación de la primera librería, nos ponemos con la del memcached en sí…
cd /usr/local/src
wget http://www.danga.com/memcached/dist/memcached-1.2.6.tar.gz
tar xzvf memcached*
cd memcached*
LDFLAGS=’-Wl,–rpath /usr/local/lib’ ./configure –prefix=/usr/local
make
make install
En este momento ya debería estar todo correctamente configurado y funcionando… por lo que tan sólo nos quedaría arrancar el memcached…
Para hacer una prueba de su funcionamiento, haremos lo siguiente:
memcached -d -u root
ps aux | grep memcached
Si aparece una línea en la que se ejecuta el programa, es que funciona correctamente… y por ello lo «apagaremos»:
pkill memcached
Ahora sí que vamos a ejecutarlo correctamente. Lo primero que haremos será crear un usuario que sea el que lo ejecute… ¿o lo hacemos como root?
adduser memcached
Ahora sí que sí; hemos de elegir la memoria, el puerto, el usuario y la IP, y para ello usaremos los parámetros:
- -m 256: en este caso, 256 MegaBytes
- -u memcached: el usuario, el que hemos creado: memcached
- -p 11211: en el puerto 11211
- -l 127.0.0.1: la IP en que se escuchará el servicio
De tal forma que nos queda lo siguiente:
memcached -d -m 256 -u memcached -p 11211 -l 127.0.0.1
Y ya está… en teoría debe estar funcionando todo… Pero para comprobarlo ejecutaremos algo sencillo en una aplicación PHP que cargue en memoria unos datos y luego los pinte por pantalla…
Aunque antes hay que comprobar si tenemos activado el memcache en PHP para poder hacer uso del sistema… es tan sencillo como buscarlo en un phpinfo(). Sino, tendremos que instalarlo…
Primero instalaremos una librería de las que depende… la Zlib:
cd /usr/local/src
wget
tar xzvf zlib-*
cd zlib-*
./configure –prefix=/usr/local
make
make install
Ahora sí que nos toca instalar la memcache del PHP para conseguir el fichero memcache.so
cd /usr/local/src
wget http://pecl.php.net/get/memcache-2.2.4.tgz
tar xzvf memcache-*
cd memcache-*
ln -s /usr/include/php5 /usr/include/php
phpize
./configure –prefix=/usr/local
make
make install
Ahora, si nada falla, entraremos en la carpeta «modules» y encontraremos el fichero «memcache.so».
cd modules
cp memcache.so /usr/lib/php/modules/
cd /usr/lib/php/modules/
Ahora iremos a crear el fichero para que el PHP lo incluya en su configuración…
cd /etc/php.d/
joe memcache.ini
Una vez tengamos el editor tan sólo hemos de añadir la siguiente línea:
extension=memcache.so
Y en principio tan sólo nos queda reiniciar el Apache para que se reinicie el PHP y tenga la nueva librería…
/etc/init.d/httpd restart
Ahora volvemos a probar el phpinfo() en el que nos ha de aparecer algo así:
Aunque queda una cosa… probar que funciona 🙂 y para ello crearemos ya un fichero en nuestro sitio web de ejemplo llamado memcached.php que incluirá lo siguiente:
<?php
$memcache = new Memcache;
$memcache->connect(‘127.0.0.1’, 11211) or die («No he podido conectarme»);$version = $memcache->getVersion();
echo «<p>Version de Memcached: «.$version.»</p>\n»;$tmp_object = new stdClass;
$tmp_object->str_attr = «prueba»;
$tmp_object->int_attr = 12345;$memcache->set(‘key’, $tmp_object, false, 10) or die («No se ha podido guardar informacion»);
echo «<p>La informacion guardada estara solo 10 segundos en memoria…</p>\n»;$get_result = $memcache->get(‘key’);
echo «<p>Informacion almacenada:</p>\n»;
echo «<pre>\n»;
var_dump($get_result);
echo «</pre>\n»;
?>
Y si llamamos a ese fichero desde el navegador, deberíamos obtener esto:
Version de Memcached: 1.2.6
La informacion guardada estara solo 10 segundos en memoria…
Informacion almacenada:object(stdClass)#3 (2) {
[«str_attr»]=>
string(6) «prueba»
[«int_attr»]=>
int(12345)
}
Así que, a partir de ahora… a guardar cosas en memoria y a acceder a ellas de forma «inmediata».
Deja una respuesta