Instalar memcached en Mac OSX y las extensiones php memcache y memcached

Memcached es un sistema distribuido de cache de memoria de objetos. Es decir, objetos que tengamos creados en nuestro programa los podemos cachear en memoria. Esto es muy útil por ejemplo para ahorrarnos queries. Ejecutamos una query, guardamos el resultado en un objeto y lo cacheamos en memoria. De esta manera a la próxima vez, en lugar de ejecutar otra vez la misma query, simplemente accederemos al objeto con el resultado guardado por memcache. Es decir, guardado en memoria. Esto nos puede ahorrar costes de lectura en disco y CPU. Es un proceso vital por ejemplo para webs de alto tráfico

Hay dos librerías o extensiones distintas para php: memcache y memcached. Sirven para lo mismo, simplemente están creados por distintos autores. Las únicas diferencias es que la última, memcached, tiene algunas funcionalidades más que la primera.

También hay que tener en cuenta un detalle. Estas dos librerías o extensiones de php (memcache y memcached) se conectan a un demonio ejecutandose en un servidor el cual es el que se encarga de guardar y gestionar los objetos en memoria. Precisamente este demonio se llama también memcached.

1. Instalación del servidor memcached

En Mac OSX hay dos maneras de instalarlo. La más sencilla es a través del gestor de paquetes brew:

Para instalarlo usando el código fuente hay que seguir los siguientes pasos:

1.1 Instalar libevent

Libevent es una librería que notificación de eventos asíncronos y que Memcached utilitza. Para instalarla:

1.2 Instalar Memcached

Ahora podemos instalar Memcached con los siguientes comandos

Una vez instalado podemos arrancar el proceso ejecutando

Por defecto el puerto por el que recibe peticiones memcached es por el 11211. Si quisieramos ejecutar otro puerto, usaríamos el parámetro -p

Si queremos ejecutar memcached como un demonio y así poder cerrar nuestra consola de comandos, usaríamos el parámetro -d

2. Instalación de la extensión php Memcache

Descargamos el código fuente de memcache y lo compilamos

Ahora que lo tenemos compilado, copiamos en la carpeta donde php suele guardar las extensiones. La carpeta tiene que ser algo parecida a la siguiente:

ahora simplemente en el php.ini (generalmente está en el directorio /etc/php.ini) añadimos la extensión de memcache

Reseteamos el apache

Finalmente comprobamos que funciona memcache bajo php:

Nos tendría que salir algo parecido a esto:

Ahora podemos probar en un fichero .php su correcto funcionamiento:

Así que en nuestra web tendría que aparecer el texto:

La versión de memcached instalada es: 1.4.25

3. Instalación de la extensión php Memcached

3.1 Instalación de libmemecached

Antes tenemos que instalar libmemcached, que es una librería cliente y de herramientas para el servidor de memcached

NOTA: En mi caso me dió problemas al ejecutar el ./configure tenía los siguientes errores:

Para solventar este problema he tenido que modificar varios ficheros de la librería libmemcached. Si os surge un problema similar, los pasos que he seguido están indicados aquí

3.2 Instalación del módulo

Descargamos y compilamos

Ahora que lo tenemos compilado, copiamos en la carpeta donde php suele guardar las extensiones

ahora simplemente en el php.ini añadimos la extensión de memcached

Reseteamos el apache

Finalmente comprobamos que funciona memcache bajo php:

Nos tendría que aparecer un texto parecido al siguiente:

Ahora podemos probar en un fichero .php su correcto funcionamiento:

Así que desde nuestro navegador tendría que aparecer el texto:

La versión de memcached instalada es: 1.4.25

The following two tabs change content below.
avatar

Raúl Vállez

Responsable técnico y cofundador en Samsaria
Ingeniero informático y compositor de música. Conocedor de varias tecnologías web: PHP, Zend, MySql, Oracle, Coldfusion y un poco de Java. Alternando la programación con la composición de música para medios audiovisuales y de BSO para cortometrajes.
avatar

Últimas entradas de Raúl Vállez

Etiquetado con: , ,
Publicado en: PHP

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos necesarios están marcados *

*