Tras descargar (realmente no es necesario) el binario para win32 de la página de Jellycan Code y descomprimirlo la sorpresa es instantánea, solo hay un archivo "memcached.exe", sin ayuda o README de ningún tipo, lo que me llevó a jugar un rato con el archivo, sus parámetros y a leer un poco.
En la misma página vi una referencia a un MemCacheD Manager resultó una opción simple y gráfica de administrar mi servicio de memcache incluso se puede hacer de forma remota, así que lo tomaré como base:
Descargar MemCacheD Manager (al momento la versión es 1.0.3.0, en adelante MCDM) e instalarlo, los pasos son muy simples no hay mucho que seleccionar pues simplemente descomprime sus archivos.
Ejecutar MCDM como administrador, en Win7: oprimir la tecla "windows", escribir "memcached" (o lo necesario para que aparezca seleccionado MCDM) y las teclas Shift+Ctrl+ENTER para lanzarlo como administrador.
La interface es muy simple, hay tan poco que decir que voy a poner una imágenes con cada paso para que el post se vea interesante.
Server name: es la IP, dominio o nombre del servidor a administrar, en mi caso es mi equipo actual.
User Name, Pasword, Default Instalation Path no son necesarios ya que es mi equipo local.
De momento no cambié la configuración por defecto del servicio así que, tras 5 minutos, está listo el servidor memcache. El único problema que se presentó fue que la primera vez no ejecuté MCDM como administrador y el servicio no pudo iniciar.
Ahora se puede ver el estado del servidor en la pestaña "status":
Incluso si cierro el MCDM el servicio sigue corriendo, para detenerlo debo dar clic derecho sobre el nombre de la instacia que creé (Memcache) y de las opciones elijo "Stop service" y lo mismo con el servidor si quiero eliminarlo.
Instalar la extensión memcached para PHP es muy simple, solo se descarga la versión correcta para el sistema desde php.net/pierre/ en mi caso, siguiendo el post anterior en donde instalé y configuré mi sistema actual descargo http://downloads.php.net/pierre/php_memcache-2.2.6-5.3-nts-vc9-x86.zip, el dll contenido se descomprime en la carpeta "ext" de php y el "php.ini" se modifica agregando la línea:
[PHP_APC] extension=php_memcache.dllSe reinicia el IIS y se verifica que la extensión se ha cargo correctamente.
Es hora de probar la conexión con el servidor Memcached, para eso es necesario un archivo .php con un código muy simple.
echo "<pre>"; $cache = new Memcache(); // Mi servidor local por el puerto seleccionado $cache->connect( 'localhost', 11211 ) OR die ( "ERROR: Al conectarse con el servidor Memcached."); echo "Conectado con el servidor: " . $cache->getVersion( ) . "\n"; // Obtener el objeto guardado (si hay tal) $datos = $cache->get( 'llave_unica' ); if( $datos ) { echo "Datos cargados desde el caché " . date( "Y-m-d H:i:s" ) . ":\n"; var_dump( $datos ); } else { $obj = new stdClass ( ); $inicio = date( "Y-m-d H:i:s" ); $fin = date( "Y-m-d H:i:s", strtotime( "+30 SECOND" ) ); $obj->attr = array( 'inicio', $inicio, "fin", $fin, 'datos', 'Otras cosas' ); // Almacenar un objeto de prueba $cache->set( 'llave_unica', $obj, false, 30 ) OR die ( "ERROR: No se puede almacenar los datos." ); echo "Almacenando datos por 30 segundos " . $inicio . "\n"; var_dump( $obj ); } echo "</pre>";La salida sería algo como:
Conectado con el servidor: 1.2.6 Almacenando datos por 30 segundos 2011-06-01 00:31:47 object(stdClass)[2] public 'attr' => array 0 => string 'inicio' (length=6) 1 => string '2011-06-01 00:31:47' (length=19) 2 => string 'fin' (length=3) 3 => string '2011-06-01 00:32:17' (length=19) 4 => string 'datos' (length=5) 5 => string 'Otras cosas' (length=11)
Y la instalación ha terminado.
* Como ayuda a Wilfo que tiene "wampserver 2.0i" el servicio Memcache se instala de la misma forma, el problema, no solo para él, aparece en el momento de encontrar las extensiones correctas, primero se debe saber el tipo de compilación de PHP que se tiene, eso se puede saber usando la función phpinfo(). para wamp2.0i sería:
PHP Extension Build: API20090626,TS,VC6.
Se debe tener en cuenta principalmente la parte TS-VC6 que indica que las extensiones deben ser compiladas con VC6 y ser Thread Safe (si la extensión NO dice -nts- es -ts-).
Algunas extensiones se encuentra acá: http://downloads.php.net/pierre/, otras necesitan ser buscadas en repositorios antiguos.
Para wamp2.0i:
Memcache: http://shikii.net/blog/downloads/php_memcache-cvs-20090703-5.3-VC6-x86.zip
APC: http://downloads.php.net/pierre/php_apc-3.1.5-5.3-vc6-x86.zip
Se agregan las dlls en la carpeta wamp\bin\php\php5.3.0\ext\ y las entradas en el archivo php.ini dentro de Apache: wamp\bin\apache\Apache2.2.11\bin\, se reinicia el servicio para que las cargue y los resultados deben ser los mismos.
Gracias por el manual, comentar que con php5.4.0 y superiores no funciona el modulo memcache en su version 2.2.6 y hay que descargar 3.0.6 en http://windows.php.net/downloads/pecl/releases/memcache/3.0.6/php_memcache-3.0.6-5.4-ts-vc9-x86.zip
ResponderEliminar