2011-07-12 39 views
16

Todo el mundo sabe que hay dos extensiones para memcache en PHP:sesión de PHP y MemCached

  • Memcache
  • MemCached

Usted puede utilizar Memcache la extensión PHP como session_handler para PHP, así:

session.save_handler = memcache 
session.save_path = "tcp://serv01:11211,tcp://serv02:11211,tcp://serv03:11211" 

o puede utilizar memcached así:

session.save_handler = memcached 
session.save_path = "serv01:11211,serv02:11211,serv03:11211" 

Pero cómo ajustar otros parámetros para memcached tales como:

  • Memcached :: OPT_DISTRIBUTION
  • Memcached :: OPT_RETRY_TIMEOUT
  • Memcached :: OPT_CONNECT_TIMEOUT

En PHP I Haré así:

$cache = new Memcached(); 
$cache->addServer('serv01', 11211); 
$cache->addServer('serv02', 11211); 
$cache->addServer('serv03', 11211); 
$cache->setOption(Memcached::OPT_HASH, Memcached::HASH_MD5); 
$cache->setOption(Memcached::OPT_DISTRIBUTION, Memcached::DISTRIBUTION_CONSISTENT); 
$cache->setOption(Memcached::OPT_CONNECT_TIMEOUT, 150); 
$cache->setOption(Memcached::OPT_RETRY_TIMEOUT, 0); 

Pero hasta el momento no he encontrado ninguna documentación o ejemplos de cómo establecer esas variables cuando son utilizadas por el session_handler.

+0

Aquí hay una implementación lista para usar usando PHP y memcached. http://kvz.io/blog/2008/06/22/enhance-php-session-management/ – Beachhouse

Respuesta

8

Después que mira el canal del código fuente tanto de extensión PECL y libmemcached sí Finalmente encontré mi respuesta en el comentario del blog del autor de la extensión de memcached.

http://zmievski.org/2009/01/new-memcached-extension

cito en caso de que su blog ha desaparecido algún día:

Andrei dijo: @Ash, la sesión Guardar sintaxis de ruta no es exactamente lo mismo que la otra extensión memcache. Proveedores:

session.save_path = "127.0.0.1:11211"

Ash dijo Searle: ¿Hay alguna documentación de la sintaxis - es decir, no se manejar múltiples servidores y los parámetros opcionales como las implementaciones anteriores memcache? (por ejemplo save_path = "127.0.0.1:11211?persistent=1 & timeout = 1 & retry_interval = 15")

Andrei dijo: @Ash, no, que no es tan avanzada. Por ahora, la sintaxis es la predeterminada que soporta el analizador libmemcached: básicamente, una lista de nombre de host separada por puerto: entradas de puerto, donde: el puerto es opcional.

O

Rich Choy dijo: ¿Hay una referencia en la Web que explica cada parámetro de conexión que aparece después de host: puerto? Por ejemplo, ¿qué significa exactamente "tiempo de espera = 1"?

Andrei dijo: @Rich, ¿qué extensión está utilizando? :) El mío no admite esos parámetros adicionales, debes estar hablando de pecl/memcache one.

Y

Frank Orson dijo: 1) ¿Tiene pecl/UDP apoyo memcached en el cliente? No pude encontrar ninguna información sobre esto. Sé que pecl/memcache 3.0.4 lo admite.

2) ¿Pecl/memcached tiene soporte de failover en el cliente?

Andrei dijo: Frank, estoy trabajando en la próxima versión (2.0) de la extensión memcached. Tendrá soporte UDP y replicación (failover).

Si marca el código fuente de la versión 2 se puede ver, por ejemplo, que se puede añadir en la cadena save_path "persistente =" y "--server" ((que no sé cómo sería usado)