Memcache + PHP

¿Por qué memcache?
En muchos proyectos de software (incluyendo Web) se realizan consultas a la base de datos que un lapso de tiempo siempre arrojan el mismo resultado; pero como no teníamos con una forma de almacenar esa información para disponer de ella cada vez que la necesitamos sin tener que realizar la consulta en el motor de bases de datos nuevamente, entonces simplemente llamábamos un query X cantidad de veces sin importar los recursos que tomaba la ejecución de dicha consulta. Con el fin de evitar ese desperdicio de recursos es que ha nacido memcache.

¿Qué es memcache?
Memcache es un servicio para almacenar objetos en memoria RAM y que pueden ser utilizados por múltiples procesos sin importar si se encuentran en la misma máquina o no. El objetivo principal por el que surgió memcache es el de evitar peticiones incesarías a la base de datos.

¿Cómo lo instalo y configuro?
Para unix:
$ sudo apt-get install memcached
$ sudo /etc/init.d/memcached restart
$ sudo apt-get install php5-memcache

Activar la extensión editando el archivo /etc/php5/conf.d/memcache.ini y descomentando la línea extension.
; uncomment the next line to enable the module
extension=memcache.so

Por último reiniciar apache

Para Windows:
Bajar e instalar: http://allegiance.chi-town.com/MemCacheDManager.aspx

Activar la extensión editando el archivo  G:\wamp\bin\php\php5.2.6\php.ini  y descomentando la línea extension.
extension=php_memcache.dll

Por último reiniciar apache

Memcache es un servicio/daemon que se ejecuta por consola de la siguiente manera:

/usr/bin/memcached -d -m 2048 -u root
-d : corre como servicio.
-m : limite de memoria en MB que le permitiremos usar a memecache
-u : identidad de quien ejecuta el proceso
-p : puerto (por default es 11211)
-c : limite de conexiones simultaneas (default es 1024)
-h : muestra ayudas y otros parámetros de uso

¿Cómo lo uso?

function memcache_test(){
   $memcache = new Memcache();
   $memcache->connect("localhost",11211);
   $key = "todos_los_registros_de_tabla_datos";
   $datos = $memcache->get($key);
   if (!$datos){
      echo "No esta cachado... hitting db e insertando en  memcache. <br>";
      $result = mysql_query("SELECT * FROM datos");
      while( ($dato=mysql_fetch_assoc($result))!=null){
         $datos[]=$dato;
      }
      $memcache->set($key,$datos,false,60*60*24); //cachados  por 24 horas
      print_r($datos);
   }else{
      echo "Ya se encuentra en memoria:<br>";
      print_r($datos);
   }
}

Gracias luis por la info

Plugin de puntuación de características en wordpress

WordPress › Error

Ha habido un error crítico en esta web.

Aprende más sobre el diagnóstico de WordPress.